先來看看給的例子:
given nums = [2, 7, 11, 15], target = 9,如果有滿足target = 9的,就返回下標。because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
解法1:
我們先可以有乙個很直接的解法:
遍歷陣列中每個乙個元素a,再看它後面的元素b ,a + b 是否等於target
複雜度:
時間複雜度:o (n^2)
空間複雜度:o (1)
效率:
**:
public int twosum(int nums, int target)
private int twosumbruteforce(int nums, int target) }}
return result;
}
解法2:解法1中,對於每乙個數,我們找它後面的數的時間複雜度為o(1),能不能有更好的方法直接找到呢?
可以的, 利用hashmap的方法,先遍歷一遍陣列,將所有的元素存進去
接著遍歷一遍陣列,對於每乙個元素,直接去hashmap中找有沒有符合條件的(注意:找到的元素不能是它本身)
複雜度:
時間複雜度o(n)
空間複雜度o(n)
效率:
**:
public int twosum(int nums, int target)
private int twosumhash(int nums, int target)
for (int i = 0; i < nums.length; i++) ;}}
}return new int[2];
}
兩數相加 two sum
本篇主要介紹一道基礎演算法題,兩數相加,目的我們首先有乙個值,還有乙個array中,找出是否其中有兩個數相加起來等於這個值,這裡有三種解法,先從complexity最高的一種開始介紹 1.暴力解 o n 2 func bruteforcesolution array int sum int bool...
leetcode 兩數之和(Two Sum)
暴力法很簡單。遍歷每個元素 xx,並查詢是否存在乙個值與 target xtarget x 相等的目標元素。public int twosum int nums,int target throw new illegalargumentexception no two sum solution 複雜度...
leetcode 兩數之和 Two Sum
題目 給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 分析 暴力破解法,遍歷陣列,兩數之和為targe...