给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
- 输入:nums = [-4,-1,0,3,10]
- 输出:[0,1,9,16,100]
//977.有序数组的平方
package days0605_60dyas;
import java.util.Arrays;
public class sortedSquares {
public static void main(String[] args) {
int[] nums = {-4, -1, 0, 3, 10};
int[] res = sort(nums);
System.out.println(Arrays.toString(res));
}
public static int[] sort(int[] nums) {
int right = nums.length - 1;
int left = 0;
int[] result = new int[nums.length];
int index = result.length - 1;
while (left < right) {
if (nums[left] * nums[left] > nums[right] * nums[right]) {
result[index--] = nums[left] * nums[left];
left++;
} else {
result[index--] = nums[right] * nums[right];
right--;
}
}
return result;
}
}
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
示例:
- 输入:s = 7, nums = [2,3,1,2,4,3]
- 输出:2
package days0605_60dyas;
public class minSubArrayslen {
public static void main(String[] args) {
int s = 7;
int[] nums = {2, 3, 1, 2, 4, 3};
// int res = sub(s, nums);
int res = huaDongWindow(s, nums);
System.out.println(res);
}
//暴力
public static int sub(int s, int[] nums) {
int result = Integer.MAX_VALUE;
int sum = 0;
int subLength = 0;
for (int i = 0; i < nums.length; i++) {
sum = 0;
for (int j = i; j < nums.length; j++) {
sum += nums[j];
if (sum >= s) {
subLength = j - i + 1;
result = Math.min(result, subLength);
break;
}
}
}
return result == Integer.MAX_VALUE ? 0 : result;
}
//滑动窗口
public static int huaDongWindow(int s, int[] nums) {
int left = 0;
int sum = 0;
int result = Integer.MAX_VALUE;
for (int right = 0; right < nums.length; right++) {
sum += nums[right];
while (sum >= s) {
result = Math.min(result, right - left + 1);
sum -= nums[left++];
}
}
return result == Integer.MAX_VALUE ? 0 : result;
}
}
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来
package days0605_60dyas;
import java.util.Arrays;
public class luoXuanJuZhen {
public static void main(String[] args) {
int n = 4;
int[][] res = luoXuanJuZhen(n);
System.out.println(res);
System.out.println(Arrays.toString(res));
for (int i = 0; i < n; i++) {
System.out.print("[");
for (int j = 0; j < n; j++) {
System.out.print(res[i][j]);
if (j < n-1) {
System.out.print(",");
}
}
System.out.println("]");
}
}
public static int[][] luoXuanJuZhen(int n) {
int[][] nums = new int[n][n];
int startX = 0;
int startY = 0;
int offset = 1;
int count = 1;
int loop = 1;
int i;
int j;
while (loop <= n / 2) {
for (j = startX; j < n - offset; j++) {
nums[startX][j] = count++;
}
for (i = startX; i < n - offset; i++) {
nums[i][j] = count++;
}
for (; j > startX; j--) {
nums[i][j] = count++;
}
for (; i > startY; i--) {
nums[i][j] = count++;
}
startX++;
startY++;
offset++;
loop++;
}
if (n % 2 == 1) {
nums[startX][startY] = count;
}
return nums;
}
}
//b=a++;b=--a; 就近赋值
public class trya {
public static void main(String[] args) {
int a=0;
int aa=a++;
System.out.println("a++ "+aa);
int b=0;
int bb=--b;
System.out.println("--b " + +b);
}
}
>>
a++ 0
--b -1