A 兩數之和

2021-09-24 11:15:40 字數 1376 閱讀 1848

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

方法一:遍歷每個元素x,查詢是否存在乙個值與 target -x 相等。

public

int[

]twosum

(int

nums,

int target);}

}}throw

newillegalargumentexception

("未找到匹配的引數!");

}

時間複雜度:o(n^2),空間複雜度:o(1)

方法二:空間換時間。第一次遍歷陣列將陣列的元素和下標放至hashmap中,第二次遍歷陣列判斷hashmap中是否存在target-num[i]的key,且不能為同一元素。

注:此方法不允許陣列中存在重複元素。

public

int[

]twosum

(int

nums,

int target)

for(

int i =

0; i < nums.length; i++);

}}throw

newillegalargumentexception

("未找到匹配的引數!");

}

時間複雜度:o(n),空間複雜度:o(n)

方法三:同方法二,但只進行一次遍歷

public

int[

]twosum

(int

nums,

int target);}

map.

put(nums[i]

, i);}

throw

newillegalargumentexception

("未找到匹配的引數!");

}

時間複雜度:o(n),空間複雜度:o(n)

測試用例:

public

static

void

main

(string[

] args),5

);// int result = s.twosum(new int[0],3);

// int result = s.twosum(new int,-1);

// int result = s.twosum(new int,100);

for(

int i:result) system.out.

print

(i +

" ")

;}

兩數之和,三數之和

兩數之和 方法一 暴力 throw new illegalargumentexception 時間複雜度 o n 2 空間複雜度 o 1 public int twosum int nums,int target throw newillegalargumentexception no twosum...

leetcode 兩數之和與兩數之和

題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...

兩數之和 三數之和 四數之和

兩數之和意思就是 給你乙個陣列,從中找出兩個數字,讓他們的和等於乙個具體的target。找到所有這樣的兩個數。並且這兩個數字不能完全一樣。n數之和的意思是 給你乙個陣列,從中找出n個數字,讓他們的和等於乙個具體的target。找到所有這樣的n個數。並且這n個數字不能完全一樣。最基礎的,也是最關鍵的就...