6 15 三數之和

2021-10-09 17:13:36 字數 1299 閱讀 9459

先來看題目:

class

solution

hashmap.

put(nums[j]

,j);}}

return list;

}//從大到小排列 快排

public

static

int[

]quicksort

(int

nums,

int left,

int right)

if(left > right)

int start = left;

int end = right;

int key = nums[start]

;while

(start

if(nums[end]

>=key)

//從左往右

while

(start

>= key)

if(nums[start]

<=key)}if

(start>left)

quicksort

(nums,left,start-1)

;if(end

quicksort

(nums,end+

1,right)

;return nums;

}}

提交到leetcode結果如下:

結果慘淡…

使用雙指標方法:

public list

>

threesum

(int

nums)

//如果當前元素與前乙個元素相等,則為重複解,跳過

if(i>

0&&nums[i]

==nums[i-1]

)continue

;//取i右邊兩端元素

int l = i+1;

int r=len-1;

while

(lelse

if(sum<0)

else}}

return ans;

}

提交到leetcode結果如下:

執行時間大大降低。

運用雙指標法有時可大大降低**在迴圈中的執行次數,在某些情況下可以優先考慮。

兩數之和,三數之和

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

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

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

兩數之和,三數之和,最接近的三數之和,四數之和

二數之和 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...