今日完成
力扣专项突破SQL(1667,1484,1527)
力扣算法双指针(977,189)
力扣数据结构数组(1,88)
总结
SQL
concat('my','s','ql') 字符串拼接
left('fsdakflja',5) 取字符串前5个
substring('fsdlkjfgd',5) 跳过前5个取后面的字符
lower('KJGDFJKGSFDJ') 大写改小写
upper('dssdfkjsdlf') 小写改大写
group_concat(xxxx) 分组拼接函数
group by 分组计算
order by 升序排序
算法:双指针
977:有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
示例 2:
输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
//方法一:对数组先进行平方,然后再排序
//该方法时间复杂度为:O(nlogn)
//空间复杂度为:O(logn)
public class Solution{
public int sortedSquares(int[] nums){
int[] result = new int[nums.length];
for(int i = 0; i < nums.length; i++){
result[i] = nums[i] * nums[i];
}
Arrays.sort(result);
return result;
}
}
//方法二:双指针
//该方法时间复杂度为:O(n)
//空间复杂度为:O(1)
//最大值只可能出现在该数组的两端
public class Solution{
public int sortedSquares(int[] nums){
int left = 0;
int right = nums.length - 1;
int[] result = new int[nums.length];
k = nums.length - 1;
while(left <= right){
if(nums[left]*nums[left] > nums[right]*nums[right]){
result[k] = nums[left] * nums[left];
left++;
k--;
}else{
result[k] = nums[right] * nums[right];
right--;
k--;
}
}
return result;
}
}
189:轮转数组
给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]
示例 2:
输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释:
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]
//该方法就是将排列好的数组复制到nums中,倒是没用到双指针
//System.arraycopy(newArr, 0, nums, 0, nums.length);将newArr从下标0开始复制到nums从下标0开始 长度为nums.length
//时间复杂度:O(n)
//空间复杂度:O(n)
public class Solution{
public void rotate(int[] nums, int k){
int[] newArr = new int[nums.length];
for(int i = 0; i < nums.length; i++){
newArr[(i + k) % nums.length] = nums[i];
}
System.arraycopy(newArr, 0, nums, 0, nums.length);
}
}
数据结构:数组
题中用到了hashmap, 但现在学的还有点懵懵的,再做几个题再总结
今日没总结java,些许摆烂了。。。。。。。。。。。明日弥补过来。。。
明日计划
力扣SQL题
力扣算法题
力扣数据结构题
补昨天的java,MySQL,linux命令总结
java总结
mysql总结
linux总结