当前位置: 首页 > news >正文

江阴建设银行网站丹阳网站建设多少钱

江阴建设银行网站,丹阳网站建设多少钱,做民族网站的配色哪些颜色适合,wordpress区块链主题LeetCode 热题 100 | 53. 最大子数组和 大家好#xff0c;今天我们来解决一道经典的算法题——最大子数组和。这道题在 LeetCode 上被标记为中等难度#xff0c;要求我们找出一个具有最大和的连续子数组#xff0c;并返回其最大和。下面我将详细讲解解题思路#xff0c;并…LeetCode 热题 100 | 53. 最大子数组和 大家好今天我们来解决一道经典的算法题——最大子数组和。这道题在 LeetCode 上被标记为中等难度要求我们找出一个具有最大和的连续子数组并返回其最大和。下面我将详细讲解解题思路并附上 Python 代码实现。 题目描述 给定一个整数数组 nums请你找出一个具有最大和的连续子数组子数组最少包含一个元素返回其最大和。 示例 输入nums [-2,1,-3,4,-1,2,1,-5,4] 输出6 解释连续子数组 [4,-1,2,1] 的和最大为 6。解题思路 这道题的核心是找到一个连续子数组使得其和最大。我们可以使用 动态规划 或 分治法 来解决这个问题。 核心思想 动态规划 定义 dp[i] 表示以 nums[i] 结尾的子数组的最大和。状态转移方程 dp[i] max(dp[i-1] nums[i], nums[i])最终结果是 dp 数组中的最大值。 分治法 将数组分成左右两部分分别求解左右部分的最大子数组和。求解跨越中间的最大子数组和。返回左部分、右部分和跨越中间的最大值。 代码实现 方法 1动态规划 def maxSubArray(nums)::type nums: List[int]:rtype: intn len(nums)dp [0] * ndp[0] nums[0] # 初始化 dp[0]max_sum dp[0] # 初始化最大和for i in range(1, n):dp[i] max(dp[i-1] nums[i], nums[i]) # 状态转移max_sum max(max_sum, dp[i]) # 更新最大和return max_sum方法 2分治法 def maxSubArray(nums)::type nums: List[int]:rtype: intdef divide_and_conquer(left, right):if left right:return nums[left]mid (left right) // 2# 分别求解左右部分的最大子数组和left_max divide_and_conquer(left, mid)right_max divide_and_conquer(mid 1, right)# 求解跨越中间的最大子数组和left_sum nums[mid]right_sum nums[mid 1]temp left_sumfor i in range(mid - 1, left - 1, -1):temp nums[i]left_sum max(left_sum, temp)temp right_sumfor i in range(mid 2, right 1):temp nums[i]right_sum max(right_sum, temp)cross_max left_sum right_sum# 返回左部分、右部分和跨越中间的最大值return max(left_max, right_max, cross_max)return divide_and_conquer(0, len(nums) - 1)代码解析 动态规划 初始化 dp[0] 表示以 nums[0] 结尾的子数组的最大和初始化为 nums[0]。max_sum 初始化为 dp[0]。 状态转移 对于每个 i计算 dp[i]表示以 nums[i] 结尾的子数组的最大和。如果 dp[i-1] nums[i] 比 nums[i] 大则继续扩展子数组否则从 nums[i] 重新开始。 更新最大和 每次计算 dp[i] 后更新 max_sum。 返回结果 返回 max_sum。 分治法 递归终止条件 如果 left right返回 nums[left]。 递归求解左右部分 分别递归求解左部分和右部分的最大子数组和。 求解跨越中间的最大子数组和 从中间向左右扩展求解跨越中间的最大子数组和。 返回最大值 返回左部分、右部分和跨越中间的最大值。 复杂度分析 时间复杂度 动态规划O(n)其中 n 是数组的长度。我们只需要遍历数组一次。分治法O(n log n)每次递归将数组分成两部分递归深度为 log n每层需要 O(n) 的时间求解跨越中间的最大子数组和。 空间复杂度 动态规划O(n)需要额外的 dp 数组。分治法O(log n)递归调用栈的深度为 log n。 示例运行 示例 1 # 输入nums [-2,1,-3,4,-1,2,1,-5,4] nums [-2, 1, -3, 4, -1, 2, 1, -5, 4] print(maxSubArray(nums)) # 输出: 6示例 2 # 输入nums [1] nums [1] print(maxSubArray(nums)) # 输出: 1示例 3 # 输入nums [5,4,-1,7,8] nums [5, 4, -1, 7, 8] print(maxSubArray(nums)) # 输出: 23总结 通过动态规划或分治法我们可以高效地找到最大子数组和。动态规划的时间复杂度为 O(n)是最优的解法分治法的时间复杂度为 O(n log n)适合理解分治思想。希望这篇题解对你有帮助如果还有其他问题欢迎继续提问 关注我获取更多算法题解和编程技巧
http://www.w-s-a.com/news/150082/

相关文章:

  • 凯里展示型网站设计抖音代运营收费详细价格
  • 外包网站会自己做原型吗网站制作怎样盈利
  • 为什么在百度搜不到我的网站电商网站开发过程
  • 什么是网站反链网页设计页面链接
  • 佛山企业网站制作韩国seocaso
  • 微信公司网站vue做社区网站
  • 蒙阴网站优化五核网站建设
  • 企业微商城网站建设wordpress新闻是哪个表
  • 重庆网站开发培训机构电商网站创办过程
  • 企业建网站得多少钱长沙财优化公司
  • 网站开发api平台扒完网站代码之后怎么做模板
  • PHP网站建设选择哪家好动画设计师月薪多少
  • 网站如何做市场推广网站开发主要步骤
  • 浏览器正能量网站网页文章导入wordpress
  • 江西中国建设银行网站首页永久免费自助建网站
  • 创建自己网站的步骤吸引人的微信软文
  • 网站建设与网页设计论述题软件开发公司在哪里
  • 二级网站建设方案模板亚马逊网站建设案例
  • 网站开发兼职团队门户网站如何制作
  • 高州市网站建设开发区招聘信息
  • 上海专业网站制作设计公司企业邮箱怎样注册
  • 网站建设在商标第几类网站建设 设计创意
  • 做一网站APP多少钱重庆中色十二冶金建设有限公司网站
  • 网上做效果图网站有哪些软件徐州泉山区建设局网站
  • 凯里网站制作网站篡改搜索引擎js
  • 如何使用凡科建设网站武安城乡建设网站
  • 网站建设网站及上传wordpress火车头发布
  • 有没有做网站的团队电脑版传奇网站
  • 建立企业网站公司医疗创意小产品设计
  • 深圳 做网站 车公庙免费的招标网有哪些