zoukankan      html  css  js  c++  java
  • 数组//长度最小的子数组

    给定一个含有 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组如果不存在符合条件的连续子数组,返回 0。

    示例: 

    输入: s = 7, nums = [2,3,1,2,4,3]
    输出: 2
    解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
    

    进阶:

    如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。

    class Solution {
    public:
        int minSubArrayLen(int s, vector<int>& nums) {
            int n = nums.size();
            int cur_sum = 0;
            int min_size = INT_MAX;
            int begin = 0, end = 0;
            while(begin < n){
                if(cur_sum < s&&end < n){
                    cur_sum+=nums[end++];
                }else if(cur_sum >= s){
                    min_size = min(min_size, end-begin);
                    cur_sum -= nums[begin++];
                }
                else{
                    break;
                }
            }
            return (min_size == INT_MAX)?0:min_size;
        }
    };
    class Solution {
    public:
        int minSubArrayLen(int s, vector<int>& nums) {
            int n = nums.size();
            if(n == 0) return 0;
            int min_size = INT_MAX;
            int cur_sum = 0;
            int begin = 0;
            for(int end = 0; end < n; end++){
                cur_sum+=nums[end];
                while(cur_sum >= s){
                    min_size = min(min_size, end-begin+1);
                    cur_sum -= nums[begin++];
                }
            }
            return (min_size == INT_MAX)?0:min_size;
        }
    };
  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/strawqqhat/p/10602405.html
Copyright © 2011-2022 走看看