前言 📢
本日记为个人的刷题学习日记,内容非原创,仅为自己复习知识时,能够看得懂自己写的CV的代码,快速理解题意。另外,👍力扣官方的题解很好用,三叶姐🍭nb!!!!!
1990. 寻找数组中心索引 ✅
题意
思路
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
class Solution { public int pivotIndex(int[] nums) { int sum = 0; int len = nums.length; for(int i=0; i<nums.length; i++) { sum += nums[i]; }
int left = 0; int right; for(int i=0; i<len; i++) { right = sum - left - nums[i]; if(left == right){ return i; } else { left = left + nums[i]; } } return -1; } }
|
35. 搜索插入位置 ✅
题意
- 给定一个严格递增数组和一个目标值,返回该数组中目标值的下标,如果不含该值,返回顺序插入的位置
思路
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class Solution { public int searchInsert(int[] nums, int target) { int len = nums.length; int left = 0; int right = len - 1; while(left <= right) { int mid = left + ((right - left) >> 1); if(target == nums[mid]) { return mid; } else if(target < nums[mid]) { right = mid - 1; } else { left = mid + 1; } } return left; } }
|
面试题01.07 旋转矩阵 ✅
题意
- 给你一个N*N大小的矩阵,将其顺时针旋转90°,得到旋转后的数组
思路
- 在使用额外空间的情况下,可以考虑观察旋转后的规律:
- 新矩阵的行 对应原矩阵的列
- 举例说明:新矩阵从左到右的一行为
7,4,1
,原矩阵从下往上数第一列为7,4,1
- 按照对应的顺序,给新矩阵赋值即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public void rotate(int[][] matrix) { int len = matrix.length; int[][] matrix_new = new int[n][n]; for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) { matrix_new[j][len - i - 1] = matrix[i][j]; } } for (int i = 0; i < len; ++i) { for (int j = 0; j < len; ++j) { matrix[i][j] = matrix_new[i][j]; } } } }
|
- 在不使用额外空间的情况下,将数组上下翻转,再沿对角线交换对称元素即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public void rotate(int[][] matrix) { int len = matrix[0].length; int temp; for(int i =0; i<len/2; i++) { for(int j=0; j<len; j++) { temp = matrix[i][j]; matrix[i][j] = matrix[len-1-i][j]; matrix[len-1-i][j] = temp; } } for(int i=0; i<len; i++) { for(int j=0; j<i; j++) { temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } } }
|