思想,直接平方后进行比较,然后另开辟一个数据,进行倒序存储数组最大元素
1、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);
// return nums;
int[] res = new int[nums.length];
int n = nums.length;
for (int i = 0, j = n - 1, pos = n - 1; i <= j; ) {
if (nums[i] * nums[i] > nums[j] * nums[j]) {
res[pos] = nums[i] * nums[i];
++i;
} else {
res[pos] = nums[j] * nums[j];
--j;
}
--pos;
}
return res;
}
}
2、189. 旋转数组
利用数字给的k,将数组分为两部分,然后分别旋转,在同一旋转,就可以得到平移k个位置后的数组
class Solution {
public void rotate(int[] nums, int k) {
reverse(0, nums.length - k - 1, nums);
reverse(nums.length - k, nums.length - 1, nums);
reverse(0, nums.length - 1, nums);
}
public int[] reverse(int start, int end, int[] arr) {
while (start < end) {
int k = 0;
int temp = arr[start];
arr[start] = arr[end - k];
arr[end - k] = temp;
k++;
start++;
end--;
}
return arr;
}
}