面试题 31
来源:互联网 发布:库里季后赛数据 编辑:程序博客网 时间:2024/06/05 14:22
1 题目描述
输入一个整数数组,数组里有证正数也有负数,数组中一个或连续的多个整数组成一个子数组,求所有数组的和的最大值。要求时间复杂度为O(n)
2 算法描述
{1,-2,3,10,-4,7,2,-5} => {3,10,-4,7,2}
1+(-2)=(-1)
如果后面的元素加上 -1 的话,只会让总和减小,所以当总和小于等于零的时候,我们需要抛弃之前所求得的和,从下一个元开始重新计算
3+10-4=9,之前总和为 13 当我们加上 -4 之后总和减小 ,我们需要一个辅助变量来存储之前的最大总和。
3 实现代码 java
public class FindGreatestSumOfSubArray { public static void main(String[] args) { int[] arrays=new int[]{-1,-3,6,-5,-5}; int result=findGreatestSumOfSubArray(arrays); System.out.println(result); System.out.print(Integer.toBinaryString(-2147483648)); } private static int findGreatestSumOfSubArray(int[] arrays) { int sum=0; int max=0x80000000; for(int i=0;i<arrays.length;i++){ if(sum<=0){ sum=arrays[i]; }else{ sum=sum+arrays[i]; } if(sum>max){ max=sum; } } return max; }}
0 0
- 面试题 31
- 剑指offer面试题31
- 面试题....
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 面试题
- 驱动开发(1)基础知识
- 输入输出之对象序列化Serializable
- NSNotificationCenter消息推送
- WebRTC知识分享——信令服务
- Linux下安装并使用Java开发opencv的配置
- 面试题 31
- Server 2008 使用总结
- Python3.5 右键没有Edit with IDLE选项
- .net micro framework 功能组件裁减
- 飞鸽传书源码分析-程序启动过程
- Android Gradle 基本模板
- App推送java服务端_jpush激光推送
- 通信协议设计
- JVM参数优化指南