15. 三數(shù)之和
- 題目鏈接
排序+雙指針(C++)
- 排序,方便去重
- 固定一個(gè)數(shù)字nums[k]耕渴,使用雙指針i朽色,j邻吞。i從k+1開始,j從n-1開始不斷向中間逼近直到i>=j葫男,然后k++抱冷。
- 判斷nums[i]+nums[j]+nums[k]是否等于0,大于0或者小于0梢褐。
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
int k = 0, n= nums.size();
vector<vector<int>> ans;
sort(nums.begin(), nums.end());
if(n <= 2){
return ans;
}
int i = k + 1, j = n - 1;
vector<int> temp(3);
while(k < n - 2){
if(k != 0 && nums[k] == nums[k - 1]){
k++;
continue;
}
i = k + 1, j = n - 1;
while(i < j){
int curr = nums[i] + nums[j] + nums[k];
if(curr == 0){
temp[0] = nums[k];
temp[1] = nums[i];
temp[2] = nums[j];
ans.push_back(temp);
while(i < j && nums[i] == nums[i + 1]){
i++;
}
while(j > i && nums[j] == nums[j - 1]){
j--;
}
i++;
j--;
}else if(curr < 0){
i++;
}else{
j--;
}
}
k++;
}
return ans;
}
};
- 可以加入判斷 nums[k]>0 則直接跳出循環(huán)
627.變更性別
- 題目鏈接
異或反轉(zhuǎn)(MySQL)
- 將 sex 字段和 'm' ^ 'f' 進(jìn)行異或操作旺遮,最后就能反轉(zhuǎn) sex 字段。
'f' ^ ('m' ^ 'f') = 'm' ^ ('f' ^ 'f') = 'm'
'm' ^ ('m' ^ 'f') = 'f' ^ ('m' ^ 'm') = 'f'
UPDATE salary
SET sex = CHAR(ASCII(sex) ^ ASCII('m') ^ ASCII('f'));