代码随想录训练营 Day02
作者:jjn0703
- 2023-06-29 江苏
本文字数:1805 字
阅读完需:约 6 分钟
相关概念
今天依然是数组相关的内容的学习。今日学到的几个点记录如下:
List 的 toArray 方法,打印数组用 Arrays.toString()方法
package jjn.carl.array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author Jiang Jining
* @since 2023-06-29 22:39
*/
public class ToArrayDemo {
public static void main(String[] args) {
List<Integer> list = List.of(1, 2, 3, 4, 5);
int[] converted = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
converted[i] = list.get(i);
}
System.out.println("Arrays.toString(array) = " + Arrays.toString(converted));
List<int[]> list2 = new ArrayList<>();
list2.add(new int[]{1, 2});
list2.add(new int[]{3, 4});
list2.add(new int[]{5, 6});
int[][] arr = list2.toArray(new int[0][]);
for (int[] part : arr) {
System.out.println("Arrays.toString(part) = " + Arrays.toString(part));
}
}
}
复制代码
作业题
977. 有序数组的平方
public class LeetCode977_SortedSquares {
public int[] sortedSquares(int[] nums) {
// 双指针解法,倒序将结果放入数组
int left = 0, right = nums.length - 1;
int[] result = new int[nums.length];
int start = right;
// 结束条件, left == right
while (left <= right) {
// 按要求分别计算左边和右边的平方值
int leftSquare = nums[left] * nums[left];
int rightSquare = nums[right] * nums[right];
if (leftSquare >= rightSquare) {
result[start] = leftSquare;
left++;
} else {
result[start] = rightSquare;
right--;
}
start--;
}
return result;
}
public static void main(String[] args) {
int[] nums = new int[]{-4, -1, 0, 3, 10};
int[] result = new LeetCode977_SortedSquares().sortedSquares(nums);
System.out.println("result = " + Arrays.toString(result));
}
}
复制代码
209. 长度最小的子数组
复制代码
59. 螺旋矩阵 II
package jjn.carl.array;
import java.util.Arrays;
/**
* @author Jiang Jining
* @since 2023-06-29 23:01
*/
public class LeetCode59 {
// 按题目描述的方法,不断缩小边界
public int[][] generateMatrix(int n) {
int[][] result = new int[n][n];
// left, right, top, bottom
int left = 0, right = n - 1, top = 0, bottom = n - 1, current = 1;
while (true) {
for (int i = left; i <= right; i++, current++) {
result[top][i] = current;
}
top++;
if (top > bottom) {
break;
}
for (int i = top; i <= bottom; i++, current++) {
result[i][right] = current;
}
right--;
if (right < left) {
break;
}
for (int i = right; i >= left; i--, current++) {
result[bottom][i] = current;
}
bottom--;
if (bottom < top) {
break;
}
for (int i = bottom; i >= top; i--, current++) {
result[i][left] = current;
}
left++;
if (left > right) {
break;
}
}
return result;
}
public static void main(String[] args) {
int[][] generatedMatrix = new LeetCode59().generateMatrix(3);
for (int[] matrix : generatedMatrix) {
System.out.println("Arrays.toString(generatedMatrix[i]) = " + Arrays.toString(matrix));
}
}
}
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 4
版权声明: 本文为 InfoQ 作者【jjn0703】的原创文章。
原文链接:【http://xie.infoq.cn/article/92872323c9047a8f6b5ff7a74】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
jjn0703
关注
Java工程师/终身学习者 2018-03-26 加入
USTC硕士/健身健美爱好者/Java工程师.
评论