• [LintCode笔记了解一下]41.Maximum Subarray


    Given an array of integers, find a contiguous subarray which has the largest sum.

    首先

    當題目涉及到求最大最小值時,最初的比較數字就應當設置爲INT_MAX或INT_MIN,更爲安全。
    
    <limits.h>中有INT_MAX和INT_MIN的宏定義可直接使用。
    
    或者自行定義宏
    
    #define INT_MAX 0x7fffffff
    
    #define INT_MIN 0x80000000
    
    INT_MAX = 2147483647
    
    INT_MIN = -2147483648

    然后

    思路一:
    进行两次循环,遍历所有可能的情况,找到最大的子数组,时间复杂度为O(n^2); 
    思路二:
    对于任意一个子数组和,如果大于0,那么它再添加一个数,他的贡献是正值,如果子数组和小于0,再添加一个数,它的贡献则为负值,这时候不如将当前子数组舍掉,新数成为一个新数组。(动态规划Dynamic Programming)

    思路一

    public int maxSubArray(int[] nums) {
            // write your code
            if (nums.length == 1) return nums[0]; 
            int max = nums[0];
            for (int i = 0; i < nums.length; i++){
                int temp = nums[i];
                for (int j = i+1; j < nums.length; j++){
    
                    temp += nums[j];
                    if (temp > max){
                        max = temp;
                    }
                }
            }
    
            return max;
        }

    思路二

    public int maxSubArray(int[] nums) {
            // write your code
            int max = Integer.MIN_VALUE;
            int sum = Integer.MIN_VALUE;
            for (int i = 0; i < nums.length; i++){
                sum = sum<0 ? nums[i] : nums[i]+sum;
                if (sum>max){
                    max = sum;
                }
            }
    
            return max;
        }
  • 相关阅读:
    树上问题
    Windows Server 2012 安装dll到GAC
    一妹子开车发现车不动,男友听完她电话崩溃了
    各浏览器对 window.open() 的窗口特征 sFeatures 参数支持程度存在差异
    FullCalendar日历插件说明文档
    Request url 各种属性值
    Your Job Is Not to Write Code
    Nice way for strip_tags a like
    sqlserver 三种恢复模式
    ASP.NET路由
  • 原文地址:https://www.cnblogs.com/otakuhan/p/8606841.html
Copyright © 2020-2023  润新知