首页 > 编程语言 >算法与数据结构——整数数组求最大子数组

算法与数据结构——整数数组求最大子数组

时间:2023-03-06 18:46:40浏览次数:45  
标签:最大 nums int max 算法 数组 数据结构 dp

题目:

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

代码:

#include <iostream>
#include <Math.h>

using namespace std;

int nums[] = {2, -3, 4, 5};
//2,-1,4,9
//sum[] = {1, -1, 2, 12, 8, 15, 17, 12};
//数组长度也可以写个函数自己输入
int main()
{
	int dp[4] = {nums[0]};
	//dp[i] = max(dp[i-1] + nums[i], nums[i]);
	for (int i = 0; i < 4; i++)
	{
		dp[i] = max(dp[i - 1] + nums[i], nums[i]);
		cout << dp[i] << " ";
	}

	//取sum中的最大值
	int Max = dp[0];
	for (int i = 1; i < 4; ++i)
		if (dp[i] > Max)
			Max = dp[i];

	cout << "\n" << Max;

	return 0;
}

总结:

关键在于,dp[i] = max(dp[i-1] + nums[i], nums[i]);

dp[]表示动态规划数组,得到的是相比较后的最大数组,

该算法利用,动态规划思想,通过比较当前数组位的值,与先前判断过的规划后的数组值加上当前数组位的值,两者比较,最大值留下,从而得到求出整数数组中最大子数组的和。

参考:

经典动态规划:最大子数组问题

最大子数组问题的三种解法_求解最大子数组_Salmon_lee的博客-CSDN博客

标签:最大,nums,int,max,算法,数组,数据结构,dp
From: https://www.cnblogs.com/sodamate/p/17184929.html

相关文章

  • day06 打卡242.有效的字母异位词 349. 两个数组的交集 202. 快乐数
    day06打卡242.有效的字母异位词349.两个数组的交集202.快乐数242.有效的字母异位词242题目链接1.思路:可以先记住s的每个字符,如果出现就+1;再次循环t的每一个字符,寻......
  • js 数组中对象某个字段相等的值合并
    1、方法sameArray(data,field){letarray=[]lettmp=[]letvlaue=''data=data.sort(function(a,b){conststart=a[field]......
  • C/C++ 数据结构链栈的基本操作实现
    #include<iostream>#include<string.h>usingnamespacestd;typedefintSElemType;typedefstructStackNode{SElemTypedata;structStackNode*next;......
  • 返回一个整数数组中最大子数组的和。
    一、程序题目返回一个整数数组中最大子数组的和。二、程序要求1、输入一个整型数组,数组里有正数也有负数;2、数组中连续的一个或多个整数组成一个子数组,每......
  • javascript如何将字符串转为数组——三种方法
                参考:https://m.php.cn/article/498168.html......
  • MMR 算法优化
    一简介MMR(MaximalMarginalRelevance,最大边际相关性)算法多用于推荐场景,目标是减少排序结果的冗余。MMR算法在物品的相关性和相似性之间做了权衡,在保证相关性的基础......
  • 算法笔记之前缀和与差分
    什么是前缀和定义前缀和(PrefixSum):对于一个给定的数列\(a\),它的前缀和数列\(sum\)是通过递推能求出来得\(sum_i=\sum_{j=1}^{i}a_j\)部分和。也就是指某一序列......
  • Uoj228 基础数据结构练习题
    Uoj228最开始好像是在那个区间加区间\(\text{popcount}\)的题里看到有人提到这个题,就来写下。离联合省选还有26天,发了一上午呆。题意区间加区间开根区间和\(n,......
  • 力扣刷题之数组篇
    数组篇1.二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。classSoluti......
  • AcWing 4495. 数组操作题解
    思路此题较为简单,简述一下思路。从小到大排序,每次选取最小值,只要不为0即可每次都为序列减去一个数字太慢,但每个数又减去的数字一样,所以可以用minus记录每个数要减去的数......