Two Sum 計算兩數和是否滿足目標

2021-07-13 09:18:24 字數 1100 閱讀 6065

先來看看給的例子:

given nums = [2, 7, 11, 15], target = 9,

because nums[0] + nums[1] = 2 + 7 = 9,

return [0, 1].

如果有滿足target = 9的,就返回下標。

解法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...