题解 | #表示数值的字符串#

连续子数组的最大和(二)

http://www.nowcoder.com/practice/11662ff51a714bbd8de809a89c481e21

使用坐标记录下值:i当前子串的开头,j当前子串的结尾

start为最大子串开头,end为最大子串结尾,k为当前的数,ans为最大子串和,sum为当前的和len为最长长度。

import java.util.*;

public class Solution {
    public int[] FindGreatestSumOfSubArray (int[] array) {
       int i,start,end,k;
       int ans,sum,len;
        
       i = k = start = end = 0;
       sum = len = 0;
       ans = Integer.MIN_VALUE;
        
       while(k<array.length){
           sum+=array[k];
           if(sum>ans||(sum == ans&&k-i+1>len)){
               start = i;
               end=k;
               ans=sum;
               len = k-i+1;
           }
           if(sum<0){
               i=k+1;
               sum=0;
           }
           k++;
       }
       int arr[] = new int[end-start+1];
       int index =0;
       for(k = start; k <= end; k++)arr[index++] = array[k];
       return arr;
    }
}
全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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