先來看題目:
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 ...