Leetcode 977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 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]
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int n = nums.size();
int i = 0, j = n - 1;
vector<int> res(n);
for(int k = n - 1 ; k >= 0; k--){
if(nums[i] * nums[i] >= nums[j] * nums[j]){
res[k] = nums[i] * nums[i];
i++;
}
else{
res[k] = nums[j] * nums[j];
j--;
}
}
return res;
}
};
双指针
977. 有序数组的平方
给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其和 ≥ target
的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3]
是该条件下的长度最小的子数组。
示例 2:
输入:target = 4, nums = [1,4,4] 输出:1
示例 3:
输入:target = 11, nums = [1,1,1,1,1,1,1,1] 输出:0
看了一下思路 似懂非懂 晚上回去写一下
先用暴力写一遍,虽然超时了;需要注意result的初始值含义
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int n = nums.size();
int result = INT_MAX;
int sum = 0;
int j = 0;
for(int i = 0 ;i < n ; i++){
sum += nums[i];
while(sum >= target){
result = result > i - j + 1 ? i - j + 1 : result;
sum -= nums[j++];
}
}
//判断result有没有被更改,如果数组中所有元素和都不满足,result未被更改
if(result == INT_MAX && sum < target) result = 0;
return result;
}
};
59.螺旋矩阵II
看不明白QAQ