雜湊應用之兩數之和

2021-10-19 09:41:47 字數 1131 閱讀 6252

兩數之和

兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

示例:給定 nums = [2, 7, 11, 15], target = 4

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

一、暴力破解法

2 [7, 11, 15]

7 [11, 15]

11 [15]

遍歷每個元素 查詢後續元素與其相加的和 是否等於target

依次遍歷出 每兩個元素之和

二、倒推法

使用額外容器儲存 快速找到是否存在某個值

《元素值,索引位置》 hashmap

[2, 7, 11, 15]

<2,0> <7,1> <11,2> <15,3>

262 26-2 = 24

7 26-7 = 19

11 26-11 = 15

三、一次雜湊法

[2, 7, 11, 15] 4

26 map

2 26-2 = 24 <2,0>

7 26-7 = 19 <2,0> <7,1>

11 26-11 = 15 <2,0> <7,1> <11,2>

15 26-15 = 11

邊遍歷邊修改map的值 能達到最好效率

public static int twosum(int nums, int target) ;}}

}return new int;

}public static int twosum1(int nums, int target)

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

return new int;

}public static int twosum2(int nums, int target) ;

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

}return new int;

}

1 兩數之和 雜湊雜湊

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 最容易想到的當然是雙層迴圈的暴力解法啦,當然是超時了啊...

LeetCode雜湊表 1兩數之和

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

01 兩數之和 (雜湊表演算法)

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