首页 > 编程语言 >代码随想录算法训练营第二天 | 977.有序数组的平方、209.长度最小的子数组

代码随想录算法训练营第二天 | 977.有序数组的平方、209.长度最小的子数组

时间:2022-12-29 19:55:06浏览次数:62  
标签:977 target nums int 随想录 result 数组 长度

977.有序数组的平方

题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/

题目

给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

示例 1:

输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]

代码

 1 class Solution {
 2 public:
 3     vector<int> sortedSquares(vector<int>& nums) {
 4         int k = nums.size()-1;
 5         vector<int> result(nums.size(),0);
 6     
 7 
 8         for (int i = 0, j = nums.size()-1; i <= j;  ){
 9             if (nums[i]*nums[i] < nums[j]*nums[j]) {
10                 result [k--] = nums[j];
11                 j--;
12             }
13              
14             else if (nums[i]*nums[i] > nums[j]*nums[j]){
15                 result [k--] = nums[i];
16                 i++;
17             }    
18         }
19     return result;
20     }
21 };

209.长度最小的子数组

题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/

题目

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

 

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]

输出:2

解释:子数组 [4,3] 是该条件下的长度最小的子数组。

代码

 1 class Solution {
 2 public:
 3     int minSubArrayLen(int target, vector<int>& nums) {
 4     int result = INT32_MAX;
 5     int sum = 0;                   //滑动窗口之和
 6     int i = 0;                     //滑动窗口起始位置
 7     int sublength =0;              //滑动窗口的长度
 8     
 9     for(int j = 0;j <nums.size();j++){
10         sum+=nums[j];
11         while(sum >= target){
12             sublength = j-i+1;
13             result = result<sublength ? result:sublength;
14             sum-=nums[i++];        //更新滑动窗口起始位置
15         }
16     }
17     return result == INT32_MAX? 0:result;
18     }
19 };

标签:977,target,nums,int,随想录,result,数组,长度
From: https://www.cnblogs.com/myblogup/p/17013404.html

相关文章