題目
給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個(gè) 整數(shù),并返回它們的數(shù)組下標(biāo)。
你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。
你可以按任意順序返回答案。
思路
一開(kāi)始審錯(cuò)題了,還以為輸出可以加和為target的兩個(gè)值,后來(lái)發(fā)現(xiàn)是輸出索引。
定義一個(gè)HashMap存儲(chǔ)當(dāng)前元素nums[i]的索引i和能與它加和為target的值(target-nums[i]),key為(target-nums[i]),value為i,每遍歷一個(gè)元素,如果已經(jīng)包含這個(gè)key說(shuō)明那個(gè)位置的元素就是能和當(dāng)前元素相加和為target的。
Java代碼
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> set = new HashMap<Integer, Integer>();
int []res=new int[2];
int l=nums.length;
for(int i=0;i<l;i++){
if(set.containsKey(nums[i])) { res[0]=set.get(nums[i]);res[1]=i; break;}
else {set.put(target-nums[i],i);}
}
return res;
}
}
搜索的問(wèn)題
1.HashSet,一開(kāi)始審錯(cuò)題的時(shí)候用的這個(gè),無(wú)序,不允許有重復(fù)元素,且元素查找contains時(shí)間復(fù)雜度為O(1),本來(lái)想用ArrayList,但是它的contains函數(shù)的復(fù)雜度為O(n),HashSet添加和刪除分別是add和remove文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-524440.html
2.HashMap存儲(chǔ)的是鍵值對(duì),也是無(wú)序的,鍵值對(duì)的添加用的是put,可以查看是否包含某個(gè)key或者某個(gè)value,可以根據(jù)key獲取value,get()方法,但是不能根據(jù)value獲取key,文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-524440.html
到了這里,關(guān)于2023/07/01_leetcode每日一題_1. 兩數(shù)之和的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!