每天一題LeetCode【第2天】

T1. Two Sum 【Easy

題目

給定一個(gè)數(shù)組和一個(gè)目標(biāo)數(shù),從數(shù)組中找到兩個(gè)數(shù),使得這兩個(gè)數(shù)之和等于這個(gè)目標(biāo)數(shù),返回兩個(gè)數(shù)組的編號(hào)。

Example

給定一個(gè)數(shù)組 nums = [2, 7, 11, 15], target = 9,
因?yàn)?nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

代碼一

看到題目第一反應(yīng)就想到如下的答案,問(wèn)小學(xué)生這個(gè)問(wèn)題他應(yīng)該也是這個(gè)思路哈哈~不過(guò)復(fù)雜度就是O(n2)了。

/**
 * 初始化一個(gè)數(shù)組a,通過(guò)兩個(gè)循環(huán),一個(gè)個(gè)加過(guò)去得到正確的
 * 答案則返回
 */
public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] a=new int[2];
        for(int i=0;i<nums.length;i++){
            int x=nums[i];
            for(int j=i+1;j<nums.length;j++){
                if(x+nums[j]==target){
                    a[0]=i;
                    a[1]=j;
                    return a;
                }
            }
            
        }
        return a;
    }
}

代碼二

這是 Top Solution 的解決方法,復(fù)雜度變?yōu)榱薕(n)(這是提供答案的人說(shuō)的,感覺(jué)也能說(shuō)是O(nlogm)

/**
 * 和前面的差別在于用了一個(gè)HashMap,這個(gè)思路是不斷把數(shù)值讀入,利用map.containsKey
 * 方法來(lái)搜索。
 */
public int[] twoSum(int[] numbers, int target) {
    int[] result = new int[2];
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i = 0; i < numbers.length; i++) {
        //這里用了target - numbers[i],如果map里有,就直接找到了兩個(gè)答案
        if (map.containsKey(target - numbers[i])) {
            result[1] = i + 1;
            //通過(guò)Map的get方法得到標(biāo)號(hào),這里得到的是兩個(gè)數(shù)中遍前面的數(shù),因此給result[0]
            result[0] = map.get(target - numbers[i]);
            //返回正確結(jié)果
            return result;
        }
        map.put(numbers[i], i + 1);
    }
    return result;
}

思路

寫在代碼注釋里面

補(bǔ)充

關(guān)于 Map 以及它的常用方法

map儲(chǔ)存的是鍵(KEY)值(VALUE)對(duì),簡(jiǎn)單介紹一下它在代碼中出現(xiàn)的方法

put(object key,object value);//存入

get(object key);//根據(jù)key值找出對(duì)應(yīng)的value值

containsKey(object key);(判斷鍵是否存在)

containsValue(object value);(判斷值是否存在)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,625評(píng)論 18 399
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,890評(píng)論 0 33
  • 今晚大一學(xué)生分會(huì)第一次例會(huì),看著師姐播放的做的PPT。我想起了以前我們播放的PPT,可能很多看過(guò)的同學(xué)都忘記了吧,...
    大靜不靜閱讀 1,822評(píng)論 1 1
  • 甜蜜的懲罰 早自習(xí)上課的鈴聲剛過(guò)。文科復(fù)習(xí)班班主任柳鳴蟬大鳥(niǎo)一般從后門飄進(jìn)教室,落在第三排靠走道的一個(gè)女生面前,重...
    獨(dú)行的老雕蟲閱讀 7,805評(píng)論 0 2

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