程式設計 兩數之和

2021-09-24 21:18:48 字數 904 閱讀 4166

問題是:給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

解法一:可以暴力破解,兩個for迴圈遍歷,第乙個for迴圈用來控制第乙個數,第二個迴圈來尋找第二個數,這就不多做介紹。這個方法很容易理解,但是時間複雜度是o(n^2)空間複雜度o(1),為了節省時間,我們就用到了hash表。

解法二:利用雜湊表 兩次雜湊尋找 時間複雜度o(n) 空間複雜度o(n) **如下

public static int twosum(int nums,int tager)

for (int i = 0; i < nums.length; i++) ;}}

throw new illegalargumentexception("no fould twosum");

}

但這種解法有問題,題目中說的是不能利用陣列中的相同元素的話,可行,但如果是陣列同乙個元素的話,在第一次put時,相等的元素會被覆蓋掉,所以對方面的考慮我們有了解法三。

解法三:在第一插入時,就直接查詢,因為是兩數之和,開始插的時候可能第二數還沒插入,但第二個數插入時,第乙個數一定插入了,所以一次hash就可以了。時間複雜度o(n) 空間複雜度o(n)

public static int twosum(int nums,int tager);

}map.put(nums[i],i);

}throw new illegalargumentexception("no fould twosum");

}

這道題其實挺簡單,但在考慮時間複雜度後可以幫助我們利用hash表,和體會hash表查詢的帶來的便利。

程式設計學習(一)兩數之和

leetcode第一道題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nu...

兩數之和,三數之和

兩數之和 方法一 暴力 throw new illegalargumentexception 時間複雜度 o n 2 空間複雜度 o 1 public int twosum int nums,int target throw newillegalargumentexception no twosum...

leetcode 兩數之和與兩數之和

題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...