LintCode问题图解-6

作者: billliu_0d62 | 来源:发表于2017-09-25 17:00 被阅读17次

    本文准备讲解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。该算法难度稍高,但效率比较高。

    标准的算法

    相关文章

      网友评论

        本文标题:LintCode问题图解-6

        本文链接:https://www.haomeiwen.com/subject/djddextx.html