• Minimum Size Subarray Sum


    Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn't one, return 0 instead.

    用个比较笨的方法来做,因为我本人目前并没有能力想到啥高深的算法来解决此问题。(废话)

    首先计算数组内所有元素之和是否大于目标数,如果没有,则直接返回0。(感觉这里是可以优化的一个点)

    设一个起始的标记start,从下标0开始,不断向右压缩找到最合适的起始点;同时初始化一个result=length

    设游标cursor=start,sum=0;sum不断与cursor指向的元素相加并判断sum与目标数的大小,同时len(当前子数组的长度)自加,若sum>s,则把sum与len置零,更新cursor的位置,并且比较len与result的大小,若len<result,则更新result的值,重复执行此步骤

    实现代码如下:

        public static int minSubArrayLen(int s, int[] nums) {
            int length = nums.length;
            if(length <= 0)
            {
                return 0;
            }
            int total = 0;
            for(int i = 0; i < length; i++)
            {
                total += nums[i];
            }
            if(total < s)
            {
                return 0;
            }
            int start = 0;
            int result = length;
            while(start < length)
            {
                int index = start;
                int cursor;
                int sum = 0;
                int len = 0;
                for(cursor = index; index < length; index++)
                {
                    if(nums[cursor] >= s)
                    {
                        return 1;
                    }
                    sum += nums[index];
                    len++;
                    if(sum >= s)
                    {
                        if(len <= result)
                        {
                            result = len;
                        }
                        cursor = index;
                        sum = 0;
                        len = 0;
                        continue;
                    }
                }
                start++;
            }
            return result;
        }
  • 相关阅读:
    Toad 常用快捷键
    Oracle Form删除list项
    不得重新使用的登录口令
    OE_ORDER_PUB.PROCESS_ORDER to Release a hold on sales order in R12
    OE_ORDER_PUB.PROCESS_ORDER to Apply hold on a sales order
    说明性弹性域段
    使用VPD解决EBS中信息屏蔽问题
    Oracle EBS客户化程序中格式化金额
    Form开发中组件控制的几个常用方法
    .Net的差评
  • 原文地址:https://www.cnblogs.com/WakingShaw/p/12076704.html
Copyright © 2020-2023  润新知