珍宝鸭的力扣练习(7):分治法解决问题

题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

动态规划和分治法的区别
动态规划也是一种分治思想(比如其状态转移方程就是一种分治),但与分治算法不同的是,分治算法是把原问题分解为若干个子问题,自顶向下求解子问题,合并子问题的解,从而得到原问题的解。动态规划也是把原始问题分解为若干个子问题,然后自底向上,先求解最小的子问题,把结果存在表格中,在求解大的子问题时,直接从表格中查询小的子问题的解,避免重复计算,从而提高算法效率。

=================================
分治法解题思路:

  1. 定义基本情况。
  2. 将问题分解为子问题并递归地解决它们。
  3. 合并子问题的解以获得原始问题的解。
    =========================

在此题的情况下:

1.取数组中心点为p,最大的连续子数组要么在p的左边,要么在p的右边,要么穿过p,一共有三种基本情况。

2.p左边的数组再取中心点,求最大子数组和。。。
p右边的数组再取中心点,求最大子数组和。。。

3.合并最大的子数组和

=================================
在这里插入图片描述
代码:

                                    

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览