2020-10-12 Leetcode 兩數之和
最近剛學Java,出於練習目的決定在LeetCode開始刷題。
兩數之和
給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
在我看到題目時第一反應是暴力列舉。即建立兩個迴圈,進行兩次判斷得到目標的索引值。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];//建立結果陣列
int i = 0;//外層迴圈的索引
loop:for(int a : nums) {
int j = 0;//內層迴圈的索引
for(int b : nums) {
if(i != j) {
if(target == a + b) {
result[0] = i;
result[1] = j;
break loop;
}
}
j++;
}
i++;
}
return result;
}
}
在我提交完後,出現了令我非常頭疼的問題。
這樣寫的時間複雜度為O(n2),感覺還是比較大的。
在看了看題解後發現還有一種做法是用圖來做,這樣的時間複雜度為O(n)。
附程式碼:
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
int i = 0, j = 0;
for(i = 0; i < nums.length; i++){
//如果找不到target-num[i]的鍵,那麼繼續向圖中放入鍵值對
if(!map.containsKey(target - nums[i])){
map.put(nums[i], i);
}
//如果找到了鍵值對,那麼提取出target-num[i]所對應的值
else{
j = map.get(target - nums[i]);
break;
}
}
//返回的值即為對應的索引
return new int[]{i, j};
}
}
不得不說不同思考方式得到的結果差異還是蠻大的,我還需要多精進。
相關文章
- LeetCode:兩數之和LeetCode
- LeetCode - 兩數之和LeetCode
- LeetCode 1 兩數之和LeetCode
- leetcode #1 兩數之和LeetCode
- LeetCode之兩數之和LeetCode
- LeetCode-兩數之和LeetCode
- LeetCode: Two sum(兩數之和)LeetCode
- LeetCode 1. 兩數之和LeetCode
- LeetCode-1. 兩數之和LeetCode
- [LeetCode] Two Sum 兩數之和LeetCode
- leetcode-0001 兩數之和LeetCode
- 組隊刷LeetCode - 兩數之和LeetCode
- LeetCode 1 兩數之和(簡單)LeetCode
- [LeetCode 刷題] 1. 兩數之和LeetCode
- LeetCode題集-1- 兩數之和LeetCode
- 兩數之和
- 每日一道 LeetCode (1):兩數之和LeetCode
- [演算法] LeetCode 1.兩數之和演算法LeetCode
- #leetcode刷題之路1-兩數之和LeetCode
- LeetCode每日一題:兩數之和(No.1)LeetCode每日一題
- python leetcode 之兩數之和(two sum)PythonLeetCode
- leetCode解題記錄1 - 兩數之和LeetCode
- LeetCode-Python 1. 兩數之和LeetCodePython
- 2020/10/31·Leetcode·兩數之和LeetCode
- Leetcode力扣1 兩數之和(Python版)LeetCode力扣Python
- LeetCode每日一題 (32)1. 兩數之和LeetCode每日一題
- 1. 兩數之和
- LeetCode 演算法 | 兩數之和不簡單啊LeetCode演算法
- Leetcode第一題:兩數之和(3種語言)LeetCode
- Fifth. LeetCode 2:Add Two Numbers 兩數之和LeetCode
- 刷 LeetCode 跟著這個系列就行啦----兩數之和LeetCode
- LeetCode 之 JavaScript 解答第一題 —— 兩數之和(Two Sum)LeetCodeJavaScript
- 簡單演算法題:leetcode-1 兩數之和演算法LeetCode
- 用python手刃Leetcode(1):兩數之和【簡單題】PythonLeetCode
- 【新手小白刷leetcode記錄貼】 1.兩數之和LeetCode
- 演算法-兩數之和演算法
- 兩數之和詳細解答
- leetcode 解題 1.兩數之和-python3 兩種解法 @ 官方LeetCodePython