关闭

Minimum Size Subarray Sum

标签: ArrayBinary SearchTwo Pointers
182人阅读 评论(0) 收藏 举报
分类:
public class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        if (nums == null || nums.length <1) {
            return 0;
        }
        int ptr1 = 0;
        int ptr2 = 0;
        int sum = nums[0];
        int result = Integer.MAX_VALUE;
        while (ptr2 < nums.length) {
            if (ptr1 == ptr2) {
                if (sum >= s) {
                    return 1;
                }
                ptr2++;
                if (ptr2 < nums.length) {
                    sum += nums[ptr2];
                } else {
                    return result;
                }
            } else {
                if (sum >= s) {
                    result = Math.min(ptr2 - ptr1 + 1, result);
                    sum -= nums[ptr1];
                    ptr1++;                    
                } else {
                    ptr2++;
                    if (ptr2 < nums.length) {
                        sum += nums[ptr2];
                    } else {
                        if (ptr1 == 0) {
                            return 0;
                        } else {
                            return result;
                        }
                    }                
                }
            }
        }
        return result;
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:26431次
    • 积分:2348
    • 等级:
    • 排名:第15967名
    • 原创:214篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条