`
kevin_in_java
  • 浏览: 30309 次
  • 性别: 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
分享到:
评论

相关推荐

    求子数组最大和

    在编程领域,"求子数组最大和"是一个经典的算法问题,常见于计算机科学的数据结构与算法课程中。这个问题的目标是给定一个整数数组,找出这个数组中的一个连续子数组,使得其元素之和最大。这个问题的一个著名解决...

    C语言程序:求子数组的最大和

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

    Java实现求子数组和的最大值算法示例

    "Java实现求子数组和的最大值算法示例" 本文主要介绍了Java实现求子数组和的最大值算法,涉及Java数组遍历、判断、运算等相关操作技巧。下面是对该算法的详细讲解和分析。 首先,需要了解子数组的概念。子数组是...

    求子数组最大和的解决方法详解

    【标题】:"求子数组最大和的解决方法详解" 【描述】:"本文深入探讨了求解子数组最大和的有效算法,适合需要了解此问题解决方案的人参考" 【标签】:"求子数组的最大和" 在计算机科学中,求子数组最大和是一个...

    求子数组最大和的实例代码

    总结来说,求子数组最大和的问题可以通过动态规划的Kadane算法在O(n)的时间复杂度内解决。实例代码展示了如何实现这个算法,通过比较当前元素与前一个子数组和,找出能够构成更大和的策略,并在遍历过程中保持最大子...

    PHP实现求连续子数组最大和问题2种解决方法

    本文实例讲述了PHP实现求连续子数组最大和问题2种解决方法。分享给大家供大家参考,具体如下: 问题描述 求子数组的最大和 题目描述: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一...

    求一组数组的两个最大值和两个最小值 分治法

    3. **求子数组的最大值与最小值**: - 对于每个子数组 `C1` 和 `C2`,分别找出两个最大值和两个最小值。这里可以通过排序子数组来实现。排序后,数组的第一个元素是最小值,最后一个元素是最大值。 4. **合并结果**...

    Java版回溯法求子集和Demo

    从X{a1,a2,a3,...,an}集合用回溯法按照升序或降序找出和的第一个子集,可设置最大求解时间。

    用回溯法求子集和的c++代码

    一个程序,很好的。是关于如何用回溯法求子集和的。

    July整理的100题微软数据结构和算法面试题

    3. **求子数组最大和**: 使用Kadane's算法,遍历数组一次,同时维护当前子数组的和与最大子数组的和。如果当前元素比前一个元素大,就累加;否则,重新从当前元素开始计算子数组的和。 4. **二元树找和为特定值的...

    数据结构求子串

    数据结构中的串是一种重要的线性数据结构...总之,串的处理是数据结构学习中的一个重要组成部分,理解串的概念、掌握其存储方式以及能够熟练实现串的基本操作,如求子串,对于提升编程能力和解决实际问题具有重要意义。

    算法面试题总结.pdf

    三、求子数组的最大和 这个问题要求输入一个整形数组,数组里有正数也有负数,求所有子数组的和的最大值。要求时间复杂度为O(n)。解答中,我们使用动态规划的方法来解决这个问题,使用一个数组b来保存每个子数组的...

    面试中经常被问到的80道算法题

    知识点三: 求子数组的最大和 在这道题中,我们需要计算一个数组中的所有子数组的和,并输出最大值。为了实现这一目标,我们需要对数组进行遍历,并使用合适的算法来计算子数组的和。 知识点四: 在二元树中找出和为...

    算法面试题总结_嵌入式-常用知识&面试题库_大厂面试真题.doc

    本资源摘要信息涵盖了各种算法面试题,包括二元查找树、二元树、栈、子数组最大和、二元树路径、最小k个元素、腾讯面试题、链表相交、怪题等多个方面的知识点。 1. 把二元查找树转变成排序的双向链表:本题目考察了...

    [汇总II][最新整理]微软等公司数据结构%2B算法面试100题[第1-80题].pdf

    3. **求子数组最大和** 这是著名的“Kadane's Algorithm”。算法的核心思想是动态规划,通过遍历数组一次,维护当前子数组的最大和以及全局最大和。如果当前元素大于当前子数组的和加上当前元素,那么更新子数组的...

    求子集c++算法,经典

    ### 求子集C++算法详解 #### 一、问题背景与定义 在计算机科学领域,求子集问题是常见的组合数学问题之一。对于给定的一组元素集合,我们需要找到该集合...希望本文能帮助读者更好地理解和掌握求子集问题的相关知识。

    Google微软-华为腾讯-面试笔试数据结构和算法编程题目和部分答案

    3. 求子数组的最大和 这道题目要求从一个整形数组中找到和最大的子数组。解决这个问题需要使用动态规划算法,先计算每个元素的累加和,然后找到和最大的子数组。 4. 在二元树中找出和为某一值的所有路径 这道题目...

    数据结构第4-5章数组广义表自测卷空题.docx

    数据结构第四、五章数组、广义表自测卷空题 一、填空题 1. 设S= "A;/document/Mary.doc”,则stden(s)=,aT的字符定位的位置为。 知识点:串的基本概念和操作。在计算机科学中,串是一种基本的数据结构,它是一种...

Global site tag (gtag.js) - Google Analytics