d2025327
目录
一、sql-连续出现的数字
二、三数之和
三、125. 验证回文串 - 力扣(LeetCode)
180. 连续出现的数字 - 力扣(LeetCode)
一、sql-连续出现的数字
找出连续出现三次以上的数字,并且需要去重
连续三次可以用三个表作笛卡集,把相邻的三个数据放在一行,相等 就是用=来判断
把三个表的数据放到一行之后就可以用 = 来判断是否相等
相等保留,最后去重一下
select distinct l1.num as 'ConsecutiveNums'
from Logs l1,Logs l2,Logs l3
where l2.id - 1 = l1.id
and l3.id - 1 = l2.id
and l1.num = l2.num
and l2.num = l3.num
二、三数之和
去重太恶心了
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> ret = new ArrayList<>();
Arrays.sort(nums);
for(int i = 0;i < nums.length;){
int left = i+1;
int target = nums[i];
int right = nums.length - 1;
while(left < right){
if(nums[left] + nums[right] == -target){
List<Integer> ret1 = new ArrayList<>();
ret1.add(nums[left]);
ret1.add(nums[right]);
ret1.add(target);
ret.add(ret1);
left++;
right--;
while(left < right && nums[left] == nums[left-1]){
left++;
}
while(left < right && nums[right] == nums[right+1]){
right--;
}
}else if(nums[left] + nums[right] > -target){
right--;
}else{
left++;
}
}
i++;
while(i < nums.length && nums[i] == nums[i-1]){
i++;
}
}
return ret;
}
三、125. 验证回文串 - 力扣(LeetCode)
阴间题目
意思就是保留字母和数字
public boolean isPalindrome(String _s) {
char[] ch = _s.toLowerCase().toCharArray();
StringBuilder s = new StringBuilder();
for(int i = 0;i < ch.length;i++){
if(ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= '0' && ch[i] <= '9'){
s.append(ch[i]);
}
}
ch = s.toString().toCharArray();
int left = 0;
int right = ch.length - 1;
while(left < right){
if(ch[left++] != ch[right--]){
return false;
}
}
return true;
}