1.学习一点小东西:高效拼接字符串,你会用“+”还是StringBuilder.append? - 知乎
语法糖:语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。
Java中的“+”对字符串的拼接,其实现原理是使用StringBuilder.append()方法。
使用快慢指针法,没想到自己写出来了嘿嘿
class Solution {
public int[] sortedSquares(int[] nums) {
if(nums==null||nums.length==0)
{
return nums;
}
int l=0,r=nums.length-1;
int k=nums.length-1;
int[] result=new int[nums.length];
while(l<=r)
{
int ll=nums[l]*nums[l];
int rr=nums[r]*nums[r];
int x;
if(ll>rr)
{
result[k]=ll;
l++;
k--;
}else{
result[k]=rr;
r--;
k--;
}
}
return result;
}
}
时空复杂度均为O(n)
滑动窗口:最重要的就是如何移动滑动窗口起始点的值
自己之前写的
关键在于,确定每一步循环里的区间是左闭右开,怎样划分循环。
class Solution {
public int[][] generateMatrix(int n) {
int[][] a=new int[n][n];
int loop=n/2;
int count=1;
for(int i=0;i<loop;i++)
{
//行不动 列动
for(int j=i;j<n-i-1;j++)
{
a[i][j]=count;
count++;
}
//列不动行动
for(int j=i;j<n-i-1;j++)
{
a[j][n-i-1]=count++;
}
//列动
for(int j=n-i-1;j>i;j--)
{
a[n-i-1][j]=count++;
}
for(int j=n-i-1;j>i;j--)
{
a[j][i]=count++;
}
}
if(n%2!=0){
a[(n-1)/2][(n-1)/2]=count;
}
return a;
}
}
卡哥的做法比我的简洁,易于理解很多
下图截取自《代码随想录》
真正解决题目的代码都是简洁的,或者有原则性的 这句话真的特别正确,这种题最重要的就是怎么样找出来重复操作的规律性并做好边界值判断