DAY02 目录
前言
- 得,昨天的学习顺序反了啊
正确顺序:独立做题——>看视频讲解——>看文章讲解——>重新做题,把题目AC——>整理博客 感觉先看文章,再看视频更适合自己 - 今天学会用输出语句进行debug了
- 对变量初始化有了更全面的认识
1)定义变量但不赋值,值不可预测,运行是否报错取决于编译器,但地址是确定的,由系统分配的,只是没有初始化而已;
2)系统内存复用的机制,每个系统处理的机制不一样 - 螺旋矩阵像个风车,转晕我了,之前看过视频,这次大概有个印象,但还是无从下键
- 比之前好,之前连思路都没有,现在已经能想出方法了
- 想用Python的,但还是java语法记得熟一些
-
昨天定的ToDoList,今天看了看,还能To到明天Do - java的常用函数(如各种排序),要掌握
-
不要当混子,要学习、总结、进步
977.有序数组的平方
题目链接
平方后再排序
//平方再排序
class Solution {
public int[] sortedSquares(int[] nums) {
for(int i = 0; i < nums.length; i++) {
nums[i] = nums[i] * nums[i];
}
Arrays.sort(nums);//对java的函数不熟悉,还是看了题解才晓得
return nums;
}
}
双指针
class Solution {
public int abs(int a){//abs()函数要自己写吗
return (a > 0) ? a : -a;
}
public int[] sortedSquares(int[] nums) {
int left = 0, right = nums.length - 1;
int[] newNums = new int[nums.length];//数组的创建方式忘记了orz
for(int i = nums.length - 1; i > -1; i--){
if(abs(nums[left]) >= abs(nums[right])){//一直忘记nums[],left和right单打独斗
newNums[i] = nums[left] * nums[left];
left++;
}else{
newNums[i] = nums[right] * nums[right];
right--;
}
}
return newNums;
}
}
209.长度最小的子数组
题目链接
暴力解法(目前java对于部分测试用例存在超时情况,无法提交)
//暴力解法
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int sum = 0;
int slen = 0;
int result = Integer.MAX_VALUE;
for(int i = 0; i < nums.length; i++) {
sum = 0;
for(int j = i; j < nums.length; j++) {
sum += nums[j];
if(sum >= target) {
slen = j - i + 1;
result = result < slen ? result : slen;
break;
}
}
}
return result == Integer.MAX_VALUE ? 0 : result;
}
}
59.螺旋矩阵II
题目链接
循环不变量
class Solution {//能想出思路,但下笔如有神游外太空
public int[][] generateMatrix(int n) {
int start = 0;// 起始位置的(x,y)的坐标
int i,j;//这种定义可以吗,其中i为行,j为列
int loop = 0;
int[][] result = new int [n][n];
int count = 1;
while(loop++ < n / 2){
for(j = start; j < n - loop; j++){//j不取到最后一列
result[start][j] = count++;
}
for(i = start; i < n - loop; i++){
result[i][j] = count++;
}
for( ; j >= loop; j--){
result[i][j] = count++;
}
for( ; i >= loop; i--){
result[i][j] = count++;
}
start++;
}
if(n % 2 == 1){
result[(n+1)/2 - 1][(n+1)/2 - 1] = n*n;
}
return result;
}
}