题目大意:

输入一个×××数组,数组里有正数也有负数。

数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为 O(n)。
例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为 3, 10, -4, 7, 2,
因此输出为该子数组的和 18。
最笨的方法就是三层for循环,枚举每一种可能,得到最大的值。如果熟悉动态规划的同学应该是闭着眼睛都能拍出来吧!很简单的动态规划。
遍历到第i个数时,和最大的情况无非两种:
1、前面已经得到和值的m个数加上a[i]。
2、以a[i]作为子数组的第一个元素。
如果前面的和值sum+a[i]>a[i],则a[i]并入数组后会使和值增加,否则以a[i]为新的子数组的第一个元素可能得到最大的和值。 也可以这样理解:sum+a[i]>a[i]的条件得到一个分割点。
由于动态规划我自己也没有学到皮毛,所以感觉自己都有点说不清楚。把代码贴上,配合代码可能更好理解一点吧!
  1. /*
  2. * Problem_3.cpp
  3. *  求子数组的最大和
  4. *  Created on: 2012-8-28
  5. *      Author: Administrator
  6. */
  7. #include<stdio.h>
  8. int solve(int *a,int n){
  9. int ans=0,max=0,i;
  10. for(i=0;i<n;i++){
  11. ans+a[i]>a[i]?ans+=a[i]:ans=a[i];
  12. if(ans>max)max=ans;
  13. }
  14. return max;
  15. }
  16. int main(){
  17. int data[8]={ 3, -1, -5, -10, -4, -7, -2, -5};
  18. printf("%d",solve(data,8));
  19. }

转载于:https://blog.51cto.com/sbp810050504/975451

微软面试题系列(三):求子数组的最大和相关推荐

  1. 练习系列 - 5、求子数组的最大和

    /*! \author LiuBao \date 2011/3/24 \brief 求子数组的最大和 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有 ...

  2. [剑指offer]面试题31:连续子数组的最大和

    面试题31:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). ❖ 解法一:举例分析数组的 ...

  3. 算法 求子数组的最大和 C

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...

  4. 求子数组的最大和要求O(n)

    //求子数组的最大和 //输入一个整形数组.有整数也有负数,数组中连续一个或多个子数组,每一个子数组都有一个和,求全部子数组的和的最大值,要求时间复杂度O(n) #include<iostrea ...

  5. 剑指offer——面试题31:连续子数组的最大和

    剑指offer--面试题31:连续子数组的最大和 Solution1: 第一次做这道题.. 讲道理是这是标准的动态规划的题目,可是思路未完全想好. min_element(iterator, iter ...

  6. 程序员面试题100题第03题——求子数组的最大和

    题目:输入一个整型数组,数组里有整数也有负数.数组中连续的一个或者多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 要求时间复杂度为O(n). 分析: 方法一: 当我们加上一个 ...

  7. 【IT笔试面试题整理】连续子数组的最大和

    [试题描述]输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度O(n). 思路:当我们加上一个正数时,和会增加:当我们加上一个 ...

  8. 剑指Offer面试题:28.连续子数组的最大和

    一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...

  9. 面试题整理9 连续子数组的最大和

    <剑指offer>面试题31: 题目: 输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成的一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n). 分析:一个 ...

最新文章

  1. linux multipath简介配置 存储设备故障 负载均衡 虚拟化工具
  2. altium如何制作mark点_如何选择一家优质的网站制作公司,看这2点
  3. Android之让代码跑在主线程(无context上下文)的封装
  4. 牛客网【每日一题】5月27日题目精讲 货币系统
  5. 便携式CAN分析仪与毫米波雷达搭配使用
  6. Android实战开发--三种地图类型的设计
  7. 怀旧日剧_怀旧爱好者的老式计算资源
  8. 2个方式快速解决:Word背景图片怎么设置
  9. 插补c语言程序,逐点比较法插补C语言程序
  10. Elasticsearch 分布式引擎简介
  11. 三角波发生器电路图分析
  12. 强化学习入门——以Q-Learning为实例
  13. Java基础 DAY07
  14. 关于dpi、dp与sp的基础了解
  15. 技术赋能教育直播,保利威玩转“5G+AI”
  16. Win11系统进入BIOS的方法/UEFI的三种方法
  17. 缔造三家世界500强公司!杨寿海的“狂人日记”
  18. 做技术Leader要有危机意识
  19. java遍历list_Java中四种遍历List的方法总结(推荐)
  20. IT找工作指南,java面试项目中你遇到的难题

热门文章

  1. javaEE(3)_servlet基础
  2. 2012-11-6 2个月小结
  3. 智能指针变量做函数参数的一个值得注意的地方
  4. 485通讯的校验和_RS485通讯如何实现三菱PLC对三菱变频器的控制?
  5. android signal 处理总结
  6. cassandra学习笔记二
  7. 黒猩猩盗猎越来越严重!新科技「猩脸辨识」技术诞生
  8. Linux内核邮件列表发送和回复格式研究
  9. java高质量图片压缩
  10. 利用泛型写一个简单的链表