一、有序数组的平方
给你一个按 非递减顺序 排序的整数数组 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]
二、螺旋矩阵
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
public class test2 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int[][] nums = generateMatrix(n);for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){System.out.print(nums[i][j] + " ");}System.out.println();}}public static int[][] generateMatrix(int n) {int[][] nums = new int[n][n];int startX = 0, startY = 0;int count = 1;int loop = 0; // 起始为0while (loop < n / 2) {// 顶部 左闭右开for (int j = startY; j < n - 1 - loop; j++) {nums[startX][j] = count++;}// 右列 左闭右开for (int i = startX; i < n - 1 - loop; i++) {nums[i][n - 1 - loop] = count++;}// 底部 左闭右开for (int j = n - 1 - loop; j > loop; j--) {nums[n - 1 - loop][j] = count++;}// 左列 左闭右开for (int i = n - 1 - loop; i > loop; i--) {nums[i][loop] = count++;}startX++;startY++;loop++;}// 如果n为奇数,填充中心位置if (n % 2 == 1) {nums[n / 2][n / 2] = count;}return nums;}
}