题解 | #和大于等于K的最短子数组#

和大于等于K的最短子数组

https://www.nowcoder.com/practice/3e1fd3d19fb0479d94652d49c7e1ead1

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型ArrayList 
     * @param k int整型 
     * @return int整型
     */
    public int shortestSubarray (ArrayList<Integer> nums, int k) {
        // write code here
        int left=0,right=0;//左右指针
        int minLength = Integer.MAX_VALUE;//记录大于等于k的数组的最小长度
        int sum=0;//记录当前子数组元素之和
        for(right=0;right<nums.size();right++){//右指针从0最终移动到数组尾部
            sum+=nums.get(right);
            while(left<=right && sum>=k){//子数组之和大于等于k,左指针就可以右移
                minLength = Math.min(minLength,right-left+1);
                sum-=nums.get(left++);

            }
        }
        return minLength==Integer.MAX_VALUE?-1:minLength;//-1表示没有满足条件的子数组

    }
}

全部评论

相关推荐

06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
06-23 18:25
沈阳大学 Java
HR已读不回,是我说话方式不对吗?
大白之主:你是串子吗? hr: 我们不招人了,把岗位挂着boss只是因为我闲得慌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务