兩數(shù)之和

不積硅步無以至千里

leetcode題庫第一題——兩數(shù)之和
給定一個整數(shù)數(shù)組和一個整數(shù)目標(biāo)值,返回兩個數(shù)的下標(biāo),這兩個數(shù)相加和為目標(biāo)值。
條件1:假定給定的數(shù)組中最多有一組數(shù)據(jù)滿足條件。
條件2: 數(shù)組中的元素每個只能使用一次。
條件3: 可以以任意順序返回兩個元素的下標(biāo)。

暫時有兩種解決辦法:
一、省時間
解決思路: 先從頭到尾遍歷數(shù)組,取到第一個元素之后遍歷第一個元素之后的元素,然后判斷兩數(shù)之和是否為target,如果找到了,就保存這兩個數(shù)的下標(biāo),返回結(jié)果,如果沒有找到,就繼續(xù)查找下一個元素,再進行判斷,如果都遍歷完了還沒有找到和為target的值,就返回{-1,-1}。
時間復(fù)雜度 o(n2),空間復(fù)雜度o(n),

/**
     * @param target   目標(biāo)和
     * @param orgArray 找查找的數(shù)組
     * @return 符合條件的下標(biāo)
     */

    public int[] searchNum(int target, int[] orgArray) {
        int[] result = {-1, -1};
        for (int i = 0; i < orgArray.length; i++) {
            for (int j = i + 1; j < orgArray.length; j++) {
                if (orgArray[i] + orgArray[j] == target) {
                    result[0] = i;
                    result[1] = j;
                    return result;
                }
            }
        }
        return result;
    }

二、省空間
解決思路:用一個hashMap來存儲整數(shù)數(shù)組的元素和對應(yīng)的下標(biāo)(key存儲元素,value存儲元素對應(yīng)的下標(biāo)),然后遍歷數(shù)組,判斷map中是否存在target - orgArray[i]這樣的key,如果存在,就返回map中對應(yīng)key 的value(對應(yīng)元素的下標(biāo))和i。
如果我自己寫,可能會遍歷兩次,第一次遍歷構(gòu)造map,第二次遍歷判斷。官方解法中把兩次判斷和在一起同樣可以實現(xiàn),節(jié)省了代碼的行數(shù)。在以后要寫兩次遍歷的時候,可以考慮一下是不是可以用一次遍歷實現(xiàn)。
如果想要節(jié)省數(shù)組查找的時間,可以考慮用HashMap來實現(xiàn)。
時間復(fù)雜度:o(n)
空間復(fù)雜度:o(n)

/**
     * 通過hash表來實現(xiàn)
     *
     * @param target
     * @param orgArray
     * @return
     */
    public int[] searchNum2(int target, int[] orgArray) {

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

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

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