zoukankan      html  css  js  c++  java
  • interviewbit : Max Non Negative SubArrayBookmark Suggest Edit

    Find out the maximum sub-array of non negative numbers from an array.
    The sub-array should be continuous. That is, a sub-array created by choosing the second and fourth element and skipping the third element is invalid.

    Maximum sub-array is defined in terms of the sum of the elements in the sub-array. Sub-array A is greater than sub-array B if sum(A) > sum(B).

    Example:

    A : [1, 2, 5, -7, 2, 3]
    The two sub-arrays are [1, 2, 5] [2, 3].
    The answer is [1, 2, 5] as its sum is larger than [2, 3]
    

    NOTE: If there is a tie, then compare with segment's length and return segment which has maximum length
    NOTE 2: If there is still a tie, then return the segment with minimum starting index

    public class Solution {
        public ArrayList<Integer> maxset(ArrayList<Integer> a) {
            long maxSum = 0;
            long newSum = 0;
            ArrayList<Integer> maxArray = new ArrayList<Integer>();
            ArrayList<Integer> newArray = new ArrayList<Integer>();
            for (Integer i : a) {
                if (i >= 0) {
                    newSum += i;
                    newArray.add(i);
                } else {
                    newSum = 0;
                    newArray = new ArrayList<Integer>();
                }
                if ((maxSum < newSum) || ((maxSum == newSum) && (newArray.size() > maxArray.size()))) {
                    maxSum = newSum;
                    maxArray = newArray;
                }
            }
            return maxArray;
        }
    }
  • 相关阅读:
    [bzoj1934][Shoi2007]Vote 善意的投票
    [bzoj1834][ZJOI2010]network 网络扩容
    [bzoj2127]happiness
    [bzoj3876][Ahoi2014]支线剧情
    [bzoj1927][Sdoi2010]星际竞速
    [bzoj3223]Tyvj 1729 文艺平衡树
    [bzoj3224]Tyvj 1728 普通平衡树
    FJOI2017 RP++
    [bzoj3529][Sdoi2014]数表
    异步ajax请求数据处理
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5724743.html
Copyright © 2011-2022 走看看