zoukankan      html  css  js  c++  java
  • 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;
    	}
    	
    }
    
  • 相关阅读:
    hdu 1863 畅通工程
    pku 1275 Cashier Employment
    hdu 1879 继续畅通工程
    hdu 1301 Jungle Roads
    zoj1655 Transport Goods
    人生最大的遗憾,莫过于错误的坚持,和轻易的放弃……
    职业发展
    win8学习手册
    铭记这些题
    android 定制PreferenceScreen
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181468.html
Copyright © 2011-2022 走看看