977. Squares of a Sorted Array
C++解法
class Solution {
public:
vector<int> sortedSquares(vector<int>& A) {
for (int i = 0; i < A.size(); i++){
A[i] *= A[i];
}
sort(A.begin(), A.end()); //sorting
return A;
}
};
后面转到了Java
解法1:
class Solution {
public int[] sortedSquares(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;
}
}
解法2:
class Solution {
public int[] sortedSquares(int[] nums) {
int l = 0;
int r = nums.length - 1;
int[] res = new int[nums.length];
int j = nums.length - 1;
while (l <= r){
if(nums[l] * nums[l] > nums[r] * nums[r]){
res[j--] = nums[l] * nums[l++];
} else {
res[j--] = nums[r] * nums[r--];
}
}
return res;
}
}
两种解法都是O(n)complexity,解法大致相同。
209. Minimum Size Subarray Sum
class Solution {
public int minSubArrayLen(int target, 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 >= target){
result = Math.min(result, right-left+1);
sum -= nums[left++];
}
}
return result == Integer.MAX_VALUE ? 0 : result;
}
}
59.螺旋矩阵II
题目链接:. - 力扣(LeetCode)
文章讲解:代码随想录
视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili
class Solution {
public int[][] generateMatrix(int n) {
int[][] nums = new int[n][n];
int startX = 0, startY = 0;
int offset = 1;
int count = 1;
int loop = 1;
int i, j;
while (loop <= n/2){
for (j = startY; j < n - offset; j++){
nums[startX][j] = count++;
}
for (i = startX; i < n - offset; i++){
nums[i][j] = count++;
}
for(; j > startY; j--){
nums[i][j] = count++;
}
for (; i > startX; i--){
nums[i][j] = count++;
}
startX++;
startY++;
offset++;
loop++;
}
if (n % 2 == 1) {
nums[startX][startY] = count;
}
return nums;
}
}
做这一道开始觉得有意思了起来,接下来也觉得补起前面的打卡更有动力了一些呢。