題目描述:
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解題步驟:
採用雙指標法,先將陣列排序,計算左右指標對應位置之和,如果小於target,向右移動做指標,反之向左移動右指標。
**:
public
int[
]twosum
(int
nums,
int target)
else
if(sum > target)
else
}for
(int i =
0; i < nums.length; i++)}
for(
int i = nums.length-
1; i >=
0;i--)}
return ret;
}
題目描述:
給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[[-1, 0, 1],
[-1, -1, 2]]
解題步驟:
(1)a + b + c = 0 ----》 a + b = -c
(2)與兩數之和類似,首先我們先確定兩個數的target也就是-c,我們遍歷陣列,依次讓每個元素的取反作為target。在遍歷該元素後面的所有元素,雙指標法找到兩數之和等於target的三元組。
(3)改題目有個關鍵的地方,我們要去重
(4)對target去重,target我們需要重複元素的第一次出現作為targte,其他的去重。比如:[-4,-1,-1,0,1,2],去重時我們需要使用第乙個-1,而去除第二個-1,因為存在三元組[-1,-1,2]滿足要求。所以每次都是nums[i]與其後面的元素nums[i-1]比較
(5)對於做右指標去重,我們可以找到最後乙個重複的位置,通過nums[left]==nums[left+1]和nums[right]nums[right-1],來查詢,在查詢前。必須要判斷leftright的時候,我們還要判斷前後元素是否相同,但是此時已經沒有後乙個元素了,會出現越界。所以要先判斷是否滿足left**:
public list
>
threesum
(int
nums)
else
if(sum > target)
else}}
return alllist;
}
題目描述:
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。
例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.
與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).
解題步驟:
這個題和三數之和類似,只是求出與target差的最小值
(1)a+b+c=sum 求min(sum-target)
(2)如果sum==target ,返回target
(3)如果sumtarget, right–
**:
public
intthreesumclosest
(int
nums,
int target)
if(sum == target)
else
if(sum < target)
else}}
return retsum;
}
題目描述:
給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a + b + c + d 的值與 target 相等?找出所有滿足條件且不重複的四元組。
解題步驟:
這和求三數之和類似。
(1)遍歷陣列,依次選擇乙個元素與target之差作為三數之和he
(2)遍歷剩餘的陣列,計算三元素之和是否等於he,採用雙指標進行遍歷
(3)最主要的是在去重,每一層都要去重
(4)對於最高層迴圈,去除i > 0 && nums[i]==nums[i-1]
(5)對於此高層迴圈,去除j>i+1 && nums[j]==nums[j-1]
(6)這裡都要先判讀j是否大於其初始的值,是因為我們不需要將第乙個元素去除重複,去除第乙個元素後面的重複
(7)對於雙指標迴圈去重與三數之和一樣
**:
public list
>
foursum
(int
nums,
int target)
else
if(sum < he)
else}}
}return alllist;
}
LeetCode 1 兩數之和
給定乙個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 step 1 class solution object def tw...
leetcode 1 兩數之和
1.兩數之和 這道題和程式設計之法上面的題目有以下幾個不同 1 題目所給定的陣列是無序的,程式設計之法裡面是預設有序的 2 要求輸出原陣列的序號,如果用乙個結構體維護陣列下標,那麼需要o n 的空間,顯然不是最好的方法 3 題目中包含負數,之前想用數值直接表示陣列下標,陣列值為原來的真正陣列下標,但...
leetcode 1 兩數之和
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 class solution for int i 0 ...