leetcode1---Two Sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15],

target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,

return [0,1].

題目分析:要求求出一個數(shù)組中兩個元素和為一個定值的問題,我們的第一想法自然是循環(huán)遍歷兩次,依次記錄兩個位置的值,這樣自然是可以解的,但是這種解的時間復(fù)雜度為O(n^2),不過試了一下,這種解法也能過,代碼就不上了。我們來分析能否降低算法復(fù)雜度,將其降到O(n)級別,我們?nèi)绻胍淮螔呙杈湍艿玫秸_結(jié)果的話,自然需要一個數(shù)據(jù)結(jié)構(gòu)來記錄之前掃描過的數(shù)據(jù),然后判斷這兩個值的和是否為target,這里我們自然而然的可以想到用Map數(shù)據(jù)結(jié)構(gòu)來存儲已經(jīng)遍歷過的值和它的位置,PS:HashMap的查詢效率是O(1)而不是O(n),如果對于這個不了解的話可以去看一下hashMap的底層實(shí)現(xiàn),當(dāng)我們遍歷到當(dāng)前值nums[i]的時候,來查詢map是否還有target-nums[i]這個鍵,如果有的話,則找出對應(yīng)的值,否則我們將當(dāng)前的nums[i]作為鍵,位置i作為值放進(jìn)數(shù)組返回。代碼如下:

public static int[] twoSum(int[] nums, int target) {
        int[] result = new int[2];
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target - nums[i])) {
                result[0]=map.get(target-nums[i]);
                result[1]=i;
            } else {
                map.put(nums[i], i);
            }
        }
        return result;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,925評論 0 33
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡書 1. 問題描述 Given an ar...
    SnailTyan閱讀 508評論 0 0
  • Two Sum Given an array of integers, return indices of the...
    KaelQ閱讀 3,464評論 2 1
  • 給定一個整數(shù)數(shù)組 nums 和一個目標(biāo)值 target,請你在該數(shù)組中找出和為目標(biāo)值的那 兩個 整數(shù),并返回他們的...
    mztkenan閱讀 424評論 0 0
  • 分析: 解法一:最容易想到的暴力搜索,兩個循環(huán)。時間復(fù)雜度:O(n^2)解法二:在解法一的基礎(chǔ)上優(yōu)化一些,比如可以...
    glassyw閱讀 176評論 0 0

友情鏈接更多精彩內(nèi)容