【哈希表】leetcode_15_三數之和
python (自己寫的。。。逾時了。。。我好菜啊)
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
re = []
for i in range(len(nums) - 1):
for j in range(i+1, len(nums)):
de = nums[:]
de.remove(nums[i])
de.remove(nums[j])
k = 0 - nums[i] - nums[j]
if k in de and sorted([nums[i], nums[j], k]) not in re:
re.append(sorted([nums[i], nums[j], k]))
return re
c++(3指針法,去重好難啊啊啊啊,,,各種坑)
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> re;
sort(nums.begin(),nums.end());
for (int i = 0; i<nums.size(); i++){
if (i>0 && nums[i] == nums[i-1]){
continue;
}
int left = i+1;
int right = nums.size() -1;
while(right > left){
if (nums[right]+nums[left]+nums[i] > 0){
right--;
}
else if(nums[right]+nums[left]+nums[i] < 0){
left++;
}else{
re.push_back({nums[right],nums[left],nums[i]});
while(right>left && nums[right] == nums[right-1]) right--;
while(right>left && nums[left] ==nums[left+1]) left++;
right--;
left++;
}
}
}
return re;
}
};