解法1 – 暴力出奇迹

穷举出所有可能的连续子序列,并计算出它们的和,最后取它们中的最大值

空间复杂度:O(1),时间复杂度:O (n 3)

class Solution {public int maxSubArray(int[] nums) {if (nums == null || nums.length == 0) return 0;int max = Integer.MIN_VALUE;for (int begin = 0; begin < nums.length; begin++) {for (int end = begin; end < nums.length; end++) {// sum是[begin, end]的和int sum = 0;for (int i = begin; i <= end; i++) {sum += nums[i];}max = Math.max(max, sum);}}return max;}
}

所以,需要对此进行改进



重复利用前面计算过的结果

空间复杂度:O(1),时间复杂度:O (n 2)

class Solution {public int maxSubArray(int[] nums) {if (nums == null || nums.length == 0) return 0;int max = Integer.MIN_VALUE;for (int begin = 0; begin < nums.length; begin++) {int sum = 0;for (int end = begin; end < nums.length; end++) {// sum是[begin, end]的和sum += nums[end];max = Math.max(max, sum);}}return max;}
}



解法2 – 分治

class Solution {public int maxSubArray(int[] nums) {if (nums == null || nums.length == 0) return 0;return maxSubArray(nums, 0, nums.length);}static int maxSubArray(int[] nums, int begin, int end) {if (end - begin < 2) return nums[begin];int mid = (begin + end) >> 1;int leftMax = Integer.MIN_VALUE;int leftSum = 0;for (int i = mid - 1; i >= begin; i--) {leftSum += nums[i];leftMax = Math.max(leftMax, leftSum);}int rightMax = Integer.MIN_VALUE;int rightSum = 0;for (int i = mid; i < end; i++) {rightSum += nums[i];rightMax = Math.max(rightMax, rightSum);}return Math.max(leftMax + rightMax,Math.max(maxSubArray(nums, begin, mid),maxSubArray(nums, mid, end)));}
}



class Solution {public int maxSubArray(int[] nums) {if (nums == null || nums.length == 0) return 0;return maxSubArray(nums, 0, nums.length);}static int maxSubArray(int[] nums, int begin, int end) {if (end - begin < 2) return nums[begin];int mid = (begin + end) >> 1;int leftMax = nums[mid - 1];int leftSum = leftMax;for (int i = mid - 2; i >= begin; i--) {leftSum += nums[i];leftMax = Math.max(leftMax, leftSum);}int rightMax = nums[mid];int rightSum = rightMax;for (int i = mid + 1; i < end; i++) {rightSum += nums[i];rightMax = Math.max(rightMax, rightSum);}return Math.max(leftMax + rightMax,Math.max(maxSubArray(nums, begin, mid),maxSubArray(nums, mid, end)));}
}

求最大连续子序列和——解法1 – 暴力出奇迹||解法2 – 分治相关推荐

  1. php 求最大连续子序列,[HDOJ 1003]动态规划法求和最大的连续子序列

    Case 1: 14 1 4 Case 2: 7 1 6 题目的大致意思就是要你从给定的数组中找出一段连续的子序列,使得这段连续的子序列中所有数字的总和不小于数组中其他任何一段连续子序列中数字的总和. ...

  2. bzoj1770 USACO NOV09 GOLD 灯(暴力出奇迹)

    [问题描述] 贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望.她希望您能 ...

  3. 牛客小白月赛9: F. 暴力出奇迹(思维题)

    链接:https://ac.nowcoder.com/acm/contest/275/F 来源:牛客网 题目描述 给定一个序列,寻找一对l,r,满足1 ≤ l ≤ r ≤ n 最大化的值 其中表示将a ...

  4. 刷新纪录 | 74.7 秒训练完 ImageNet!2048 GPU 暴力出奇迹

    点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自新智元,禁二次转载 来源 | arXiv 编辑 | 三石.肖琴 ImageNe ...

  5. 【恋上数据结构】贪心(最优装载、零钱兑换、0-1背包)、分治(最大连续子序列和、大数乘法)

    贪心.分治 贪心(Greedy) 问题1:最优装载(加勒比海盗) 问题2:零钱兑换 零钱兑换的另一个例子 贪心注意点 问题3:0-1背包 0-1 背包 - 实例 一些习题 分治(Divide And ...

  6. c语言典例之求n个整数最大连续子序列和

    C语言求最大连续子序列和 问题描述 输入:具有n个数的序列x 输出:输入序列x的任何连续子序列中的最大和 解题思路:列出所有子序列,并求出它们的和,找出其中的最大者 #include<stdio ...

  7. python中连续两个小于号_Python语言描述最大连续子序列和

    求最大连续子序列的和是一个很经典很古老的面试题了,记得在刚毕业找工作面试那会也遇到过同款问题.今儿突然想起来,正好快到毕业季,又该是苦逼的应届生们各种面试的时候到了,就给写了一些小代码解决这个问题.也 ...

  8. 算法--最大连续子序列和(动态规划,分而治之)

    今天在LeetCode上遇到一个求最大连续子序列和的问题,如下: Given an integer array nums, find the contiguous subarray (containi ...

  9. maximum-subarray[最大连续子序列]

    题目描述 Find the contiguous subarray within an array (containing at least one number) which has the lar ...

最新文章

  1. Android Display System --- Surface Flinger
  2. 远程访问mysql设置
  3. SAP 采购订单进项税VOFM 例程增强
  4. ssh免密登录方法不生效?Authentication refused: bad ownership or modes for directory
  5. 数据挖掘竞赛-北京PM2.5浓度回归分析训练赛
  6. Eclipse ,Ant编译 jbpm.war包
  7. 如何在create-react-app中使用Workbox构建自定义PWA
  8. 毕马威首次发布《初探元宇宙》报告:从科幻畅想到产业风口(附报告下载链接)...
  9. Bayesian Personalized Ranking
  10. 采用单/双缓冲区需要花费的时间
  11. MAC安装ant的办法
  12. 三台虚拟机如何通过GNS3互通
  13. Qt安装QtCharts | 超简便方法
  14. 武神坛任务超详细解说。刷战神任务
  15. 【泛微E-Mobile】管理员是否可以监控群聊
  16. “优必选“杯2021中国机器人技能大赛--赛后总结
  17. OCR识别技术之—移动端证件识别
  18. init_modue和finit_module
  19. JQL 高级搜索入坑
  20. 计算机辅助遥感制图的基本过程,项目八-遥感专题图的制作

热门文章

  1. POJ 2976 Dropping tests【二分 最大化平均值】
  2. 【转载】10个最“优秀”的代码注释
  3. 玩转SmartQQ之登录
  4. msm8937+android7.1系统播放某个MP4文件在data分区下创建ramdump并生成很多elf文件问题
  5. Android系统之Broadcom GPS 移植
  6. ros消息服务器,ROS服务和消息
  7. Git 基础 —— 安装 配置 别名 对象
  8. (八)整合spring cloud云服务架构 - commonservice-eureka 项目构建过程
  9. 【Python爬虫学习笔记6】JSON文件存储
  10. 使用jQuery.Ajax向ASP.NET MVC控制器Post数据