关闭

LeetCode-Easy部分中标签为 Dynamic Programming(DP) 53. Maximum Subarray

标签: leetcode最大似然检测子序列
315人阅读 评论(2) 收藏 举报
分类:

原题

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.

题目分析

这个题表面上看能分解为类似

MaxSubArray(int[] nums, int i, int j)

即求nums[i:j]子数组的最大值。再仔细分析后发现,找不到与原问题的契合点。

不妨换思路, maxSubArray(int[] nums, int i)
dyna[i] = nums[i] + (dyna[i-1]>0 ? dyna[i-1]:0)
max = Max(max, dyna[i])

代码实现

        public int MaxSubArray(int[] nums)
        {
            int n = nums.Length;
            int[] dyna = new int[n];
            dyna[0] = nums[0];
            int max = dyna[0];

            for (int i = 1; i < n; i++)
            {
                dyna[i] = nums[i] + (dyna[i - 1] > 0 ? dyna[i - 1] : 0);
                max = Math.Max(dyna[i], max);
            }

            return max;
        }

此题更精简的做法:
http://blog.csdn.net/daigualu/article/details/70980526

2
0

猜你在找
【直播】机器学习&深度学习系统实战(唐宇迪)
【直播】Kaggle 神器:XGBoost 从基础到实战(冒教授)
【直播回放】深度学习基础与TensorFlow实践(王琛)
【直播】计算机视觉原理及实战(屈教授)
【直播】机器学习之凸优化(马博士)
【直播】机器学习之矩阵(黄博士)
【直播】机器学习之概率与统计推断(冒教授)
【直播】机器学习之数学基础
【直播】TensorFlow实战进阶(智亮)
【直播】深度学习30天系统实训(唐宇迪)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    Leetcode Solutions in Github

    Click me

    Leetcode solutions in Github, including tags: Array, HashTable, Stack, Queue, LinkedList, Tree, Graph,...

    leetcode-manager

    Click me

    Current Leetcode manager: it's used by Entity Framework, WinForms, Sql Server to manage leetcode questions that we have done. Functions include tags creation, revise and deletion, and questions creation, edit and deletion.

    个人资料
    • 访问:82930次
    • 积分:4105
    • 等级:
    • 排名:第7428名
    • 原创:261篇
    • 转载:0篇
    • 译文:0篇
    • 评论:54条
    博客专栏