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

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

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;
    }
}
全部评论

相关推荐

2024-12-27 23:45
已编辑
三江学院 Java
程序员牛肉:死局。学历+无实习+项目比较简单一点。基本就代表失业了。 尤其是项目,功能点实在是太假了。而且提问点也很少。第一个项目中的使用jwt和threadlocal也可以作为亮点写出来嘛?第二个项目中的“后端使用restful风格”,“前端采用vue.JS”,“使用redis”也可以作为亮点嘛? 项目实在是太简单了,基本就是1+1=2的水平。而你目标投递的肯定也是小厂,可小厂哪里有什么培养制度,由于成本的问题,人家更希望你来能直接干活,所以你投小厂也很难投。基本就是死局,也不一定非要走后端这条路。可以再学一学后端之后走测试或者前端。 除此之外,不要相信任何付费改简历的。你这份简历没有改的必要了,先沉淀沉淀
点赞 评论 收藏
分享
01-07 15:50
四川大学 Java
看日出看日落:好好背八股,做算法。我身边跟你bg差不多的基本都大厂暑期
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务