博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode 中等题:和大于S的最小子数组
阅读量:6305 次
发布时间:2019-06-22

本文共 1706 字,大约阅读时间需要 5 分钟。

题目

给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。

样例

给定数组 [2,3,1,2,4,3] 和 s = 7, 子数组 [4,3] 是该条件下的最小长度子数组。

挑战

如果你已经完成了O(n)时间复杂度的编程,请再试试 O(n log n)时间复杂度。

解题

 定义两个指针,slow,fast,以先后速度向右走

fast先找到第一个是的sum>s的值

根据fast和slow计算当前子数组的长度

sum-=nums[slow],寻找最后一个不满足sum>=s 的slow,每次更新子数组长度的最短值。

说明:

子数组是原始数组中连续的一部分

public class Solution {    /**     * @param nums: an array of integers     * @param s: an integer     * @return: an integer representing the minimum size of subarray     */    public int minimumSize(int[] nums, int s) {        // write your code here        if(nums ==null || nums.length <=0)            return -1;        int slow = 0;        int fast = 0;        int n = nums.length;        int sum = 0;        int minsize = n+1;        while(fast
s 的下标 sum+=nums[fast]; fast++; } minsize = Math.min(minsize, fast - slow + 1); while(sum>=s){ // 去除左边,也满足sum

 

class Solution:     # @param nums: a list of integers     # @param s: an integer     # @return: an integer representing the minimum size of subarray    def minimumSize(self, nums, s):        # write your code here        if s == None or len(nums) == 0:            return -1;        lens = len(nums)        slow = 0        fast = 0        sum = 0        res = lens+1        while fast < lens:            while fast < lens and sum < s:                sum += nums[fast]                fast +=1            while slow < fast and sum>= s:                res = min(res,fast - slow)                sum -= nums[slow]                slow +=1        if res ==lens+1:            return -1        else:            return res
Python Code

总耗时: 444 ms

转载地址:http://mmnxa.baihongyu.com/

你可能感兴趣的文章
计算机网络与Internet应用
查看>>
Django 文件下载功能
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
在市场营销中使用敏捷方法:过程、团队与成功案例
查看>>
新书问答:Agile Management
查看>>
苹果将iOS应用带入macOS
查看>>
react入门
查看>>
VUE高仿饿了么app
查看>>
针对Kubernetes软件栈有状态服务设计的思考
查看>>
你的可用性达标了吗?云端业务性能高可用的深度实践
查看>>
linux yum清缓存脚本
查看>>
基于epoll封装的事件回调miniserver
查看>>
天猫高管全面解读大快消2018新零售打法
查看>>
idea springboot热部署无效问题
查看>>
第八章 进程间通信
查看>>
HttpSession接口中的方法(Jsp中的session类的用法)
查看>>
「镁客早报」AI可预测心脏病人死亡时间;机器人开始在美国送外卖
查看>>
MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
查看>>
物联网全面升级,十年内推动工业进入智能化新阶段
查看>>
spring-通过ListFactory注入List
查看>>