题解 | #牛群保卫战#

牛群保卫战

https://www.nowcoder.com/practice/c836930db162418f87874ac5ba84726b

一、知识点:

数组、循环

二、文字分析:

  1. 初始化窗口的左边界left为0,窗口的右边界right为0,当前窗口的战斗力之和sum为0,最短连续牛群的长度minLen为数组的长度加1。
  2. 使用循环,不断向右移动窗口的右边界right。当sum小于目标战斗力值时,将当前右边界的牛的战斗力值加入sum中。当sum大于等于目标战斗力值时,更新minLen为当前窗口的长度。当sum大于等于目标战斗力值时,将当前左边界的牛的战斗力值从sum中减去,并将左边界右移一位。
  3. 返回minLen,如果minLen仍然是初始值(数组的长度加1),表示不存在满足条件的连续牛群,返回0。

时间复杂度为O(n),其中n是数组的长度。空间复杂度为O(1)。

三、编程语言:

java

四、正确代码:

import java.util.*;


public class Solution {
    public int findMinSubarrayLength(int target, int[] nums) {
        int left = 0;
        int right = 0;
        int sum = 0;
        int minLen = nums.length + 1;

        while (right < nums.length) {
            sum += nums[right];

            while (sum >= target) {
                minLen = Math.min(minLen, right - left + 1);
                sum -= nums[left];
                left++;
            }

            right++;
        }

        return minLen == nums.length + 1 ? 0 : minLen;
    }
}

全部评论

相关推荐

07-02 13:50
闽江学院 Java
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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