LintCode问题图解-6

本文准备讲解1个算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅读笔者文章(在线编程平台推荐-LeetCode)。问题的英文版本描述如下:

Minimum Subarray

Given an array of integers, find the subarray with smallest sum.

Return the sum of the subarray.

Notice

The subarray should contain one integer at least.

Example

For[1, -1, -2, 1], return -3.

问题的中文版本描述:

最小子数组

给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。

Notice

子数组最少包含一个数字

Example

给出数组[1, -1, -2, 1],返回 -3

这个问题可以选用最简单的全路径排列方法:对数组[1, -1, -2, 1],含有首数据1的所有新增可能路径为[1],[1,-1],[1,-1,-2]和[1,-1,-2,1]; 含有数据-1的所有可能新增路径为[-1],[-1,-2],[-1,-2,1];含有数据-2的所有新增可能路径为[-2],[-2,1]; 含有数据1的所有新增可能路径为[1];对每个可能路径计算处理可得出最小和。


全路径算法

标准算法需要对目标数组做特殊的计算处理。使用变量 localmin1 记录前节点参于的最低和,使用变量 localmin 记录本节点参于的最低和,使用变量 globalmin 记录最低和。对数组[1, -1, -1, 1],首数据1节点:localmin1 为 0,localmin 为1,globalmin 为1;数据-1节点:localmin1 为 1,localmin 为 -1,globalmin 为 -1;数据-1节点:localmin1 为 -1,localmin 为-2,globalmin 为-2;数据1节点:localmin1 为 -2,localmin 为-1,globalmin 为-2。该算法难度稍高,但效率比较高。


标准的算法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,860评论 0 33
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,362评论 0 12
  • 星理学原创作品,任何形式转载请联系星星 【前篇回顾】: 上一篇文章我回答了一个问题,以下是问题与答案: 1、左右人...
    星理学阅读 850评论 174 13
  • 夏日 我浮在水面上 阳光灿烂,我有点眩晕 水一点一点拍打在我身上 我藏进水中 氧气一点一点的变少 …
    断肠人K阅读 323评论 0 0
  • 早起的人取水, 夜宿的人,迷路在枯萎的清晨。 人们心里长满杂草, 站立在试图看清楚的荒地, 祭奠发芽的身体--- ...
    悟空和孔乙己阅读 284评论 0 0

友情链接更多精彩内容