• 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;
    	}
    	
    }
    
  • 相关阅读:
    Docker 第一章 安装测试
    时区
    操作系统层虚拟化
    KVM
    基于秘钥的登录认证
    Hypervisor
    通过域名区分不同网站服务
    硬件虚拟化
    虚拟化初识
    nginx rewrite (转发)
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181468.html
Copyright © 2020-2023  润新知