• LeetCode53 最大子序列问题


    题目描述:

        给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
        示例:
        输入: [-2,1,-3,4,-1,2,1,-5,4],
        输出: 6
        解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

    找到一组数中的另一个子序列,使子序列的和最大,拿到一个数,这个数如果即加上他之前的的所有数的和,与他原先相比增大了,那么就选取大的数
         * 暂时作为这个数组中的子序列之和的最大值,反之也一样,arr[i]就是记录  从0到i的元素的和 与nums[i]两者的最大值。

    package cn.leetcode.test;
    
    
    public class MaxSubArray {
    	public static void main(String[] args) {
    		int [] nums = {-2,1,-3,4,-1,2,1,-5,4};
    		int sum = maxSubArray(nums);
    		System.out.println(sum);
    	}
    	
    	
    	
    	public static int maxSubArray(int [] nums) {
    		if(nums.length==1) {//题目上至少包含一个元素
    			return nums[0];
    		}
    		int len = nums.length;
    		int arr[] = new int[len];
    		int result = nums[0];
    		arr[0] = nums[0];
    		for (int i = 1; i < arr.length; i++) {
    			arr[i] = Math.max(nums[i], nums[i]+arr[i-1]);//这一步是关键
    			result = Math.max(arr[i], result);
    		}
    		
    		return result;
    	}
    	
    }
    
  • 相关阅读:
    MySQL RR隔离 读一致性
    C++奥赛一本通刷题记录(高精度)
    CodeVs天梯之Diamond
    CodeVs天梯之Gold
    CodeVs天梯之Silver
    CodeVs天梯之Bronze
    【2018.1.14】本蒟蒻又回来了
    test
    UVa12545
    UVa1149
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181468.html
Copyright © 2020-2023  润新知