LeetCode兩數之和
給定一個整數數列,找出其中和為特定值的那兩個數。
class Solution { public int[] twoSum(int[] nums, int target) { TreeMap<Integer,Integer> map=new TreeMap<>();//hashmap都可以 for(int i=0;i<nums.length;i++){ map.put(target-nums[i],i); } LinkedHashSet<Integer> arr=new LinkedHashSet();//為了記錄結果,因為不知道有多少對,是個不確定的長度,所以用list和set最佳 for(int i=0;i<nums.length;i++){ if(map.containsKey(nums[i])){ if(map.get(nums[i])!=i){ arr.add(i); arr.add(map.get(nums[i])); map.remove(target-nums[map.get(nums[i])]); map.remove(nums[i]); } } } int b[]=new int[arr.size()]; int size=0; for (Integer integer : arr) { b[size]=integer; size++; } return b; } }
你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例:給定 nums = [2, 7, 11, 15], target = 9因為 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]
看到這個題我們首先想到的是必須要知道a[i]和目標和的差,這樣我們才能找到對應的數。如果這點想到了這個問題就迎刃而解了。
在這裡為了方便檢索我使用了集合框架:Map(key,value) 他可以直接根據key來查詢對應的value,首先我們要把陣列放在map中。其中key=targer-a[i] valuer=i;
然後在遍歷陣列,如果a[j]在Map的key集合中,那麼一定有另外一個a[i], 使得 a[i]+a[j]=targer 成立。因為我們在儲存a[i]的時候是 map(targer-a[i],i)存入的。
但是有幾點要注意:
1.防止出現 出現 a[i]+a[i]=targer的情況,即陣列中有一個元素為2,targer=4,那麼就可能出錯,所以要加一個判斷防止這樣的情況出現
2.防止重複,在找到一組數的時候覺得要把他們remove掉;
好了下面直接程式碼伺候:
相關推薦
[leetcode]兩數之和
描述 () 另一個 -s nbsp get list 示例 class 題目描述: 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。 示例: 給定 nums = [2, 7, 11, 15], ta
LeetCode兩數之和(Python)
LeetCode 兩數之和(Python) 題目:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0]
LeetCode:兩數之和
https://leetcode-cn.com/problems/two-sum/description/ 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11
Leetcode 兩數之和(c++)
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9
LeetCode:兩數之和、三數之和、最接近的三數之和
都用雜湊表的方法 兩數之和 vector<int> twoSum(vector<int>& nums, int target) { int s;
LeetCode-兩數之和
題目:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], targ
leetcode 兩數之和(Two Sum)
解決方案 方法一:暴力法 暴力法很簡單。遍歷每個元素 xx,並查詢是否存在一個值與 target - xtarget−x 相等的目標元素。 public int[] twoSum(int[] nums, int target) { for (int i = 0;
leetcode 兩數之和 java
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 +
leetcode 兩數之和 題解
題目: 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2
leetcode 兩數之和 python
class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] "
leetcode-兩數之和II-C++
給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。說明:返回的下標值(inde
leetcode-兩數之和IV
給定一個二叉搜尋樹和一個目標結果,如果 BST 中存在兩個元素且它們的和等於給定的目標結果,則返回 true。案例 1:輸入: 5 / \ 3 6 / \ \ 2 4
LeetCode-兩數之和 II
給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。說明:返回的下標值(inde
LeetCode兩數之和
給定一個整數數列,找出其中和為特定值的那兩個數。 class Solution { public int[] twoSum(int[] nums, int target) { TreeMap<Integer,Integer> ma
LeetCode 兩數之和等於目標數
給定一個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0]
leetcode兩數之和C和python3
C: /** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target) {
leetcode 兩數之和
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 =
[leetcode]兩數之和(Two Sum)
最近開始做leetcode上的題目,在此簡單做一下記錄。從簡單的題開始做,每週週末更新本週完成的題目ヘ(`▽´*) 有任何不正確的地方還請大佬們指正。 ------------------------------------------------------------
【LeetCode——兩數之和】C++實現
1、題目說明:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例:給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7
leetcode兩數之和python
在編寫leecode上的演算法第一題“兩數之和”時,遇到了一些問題,如下: 1.引數丟失 >>>Solution.twosum([2,3,4,5],8) TypeError: twosum() missing 1 required positional