`
kevin_in_java
  • 浏览: 30883 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

第三题 求子数组的最大和(数组) java实现

 
阅读更多
/*
 * 
 * 求子数组的最大和(数组)
题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。

例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18


本题目采用动态规划的思想。
求对大子序列必然是一个正序列+序列的情况。当某子序列和为0时,清空临时子序列和,即下面的temp=0;
当前子序列大于max子序列时,max=temp

 */
package cn.edu.cqupt.mircrosoft100;

public class MaxSubsequence {
	public static int getMaxSubsequence(int []array)
	{
		int maxSum=0;       
		int temp=0;
		int maxNum=array[0];    //处理整个数列都是负数的情况
		for(int i=0;i<array.length;i++)
		{
			if(maxNum<array[i])
				maxNum=array[i];
			temp+=array[i];
			if(temp<=0)
				temp=0;
			if(temp>maxSum)
				maxSum=temp;
		}
		if(maxNum<0)
			return maxNum;
		return maxSum;
	}
	public static void main(String args[])
	{
		int array[]={1,-2,3,10,-4,7,2,-5};
		System.out.println(MaxSubsequence.getMaxSubsequence(array));
	}
}

 

0
0
分享到:
评论

相关推荐

    JAVA面试题及答案参考,JAVA面试前刷刷题

    明明的随机数:本题考察了Java中的排序算法和实现,了解排序算法的基本概念和应用。 5. 哈希表 HJ10.字符个数统计:本题考察了Java中的哈希表概念和应用,了解哈希表的基本概念和操作。 字符串操作: 1. HJ17.坐标...

    微软公司等数据结构+算法面试100题(第1-100题)全部出炉

    #### 三、求子数组的最大和 **知识点概述:** 这是一个经典的动态规划问题,要求在 O(n) 时间内找到给定数组中的子数组的最大和。 **解决方案:** 采用动态规划的思想,用 `maxSum` 表示截止到当前位置的最大子...

    微软等公司数据结构+算法面试100题(含答案)

    ### 1....以上四个问题的解决方案涵盖了从二元查找树到排序的双向链表转换、特殊栈的设计、求子数组的最大和以及在二元树中寻找特定和的路径等多个方面,涉及到了数据结构和算法的核心思想和技术细节。

    程序员面试题精选100题.doc

    求子数组的最大和 - **算法原理**:可以使用动态规划的思想来解决这个问题,定义一个状态数组dp[i]表示以第i个元素结尾的最大子数组和。 - **状态转移方程**:对于任意位置i,都有dp[i] = max(dp[i-1]+nums[i], ...

    微软最新面试题目

    求子数组的最大和** - **题目背景**:数组是计算机科学中最常用的数据结构之一。本题考查的是如何找到数组中连续子数组的最大和。 - **解题思路**:本题可以使用动态规划的方法解决。设`dp[i]`表示以第i个元素...

    华为机试试题

    在这部分中,需要输入一串整数,求出整数最大和最小数之和。 知识点: * 数组处理 * 最大和最小值的计算 * 字符串处理 部分六:大数求和问题 在这部分中,需要将两个小于 128 位的大数相加。 知识点: * 大数...

Global site tag (gtag.js) - Google Analytics