首页 > 代码库 > 求子数组的最大和要求O(n)
求子数组的最大和要求O(n)
//求子数组的最大和
//输入一个整形数组,有整数也有负数,数组中连续一个或多个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度O(n)
#include<iostream> int GetMax( int * arr) { int max = arr[0]; for (int i = 1; i < 10; i++) { if (max < arr[i]) { max = arr[i]; } } return max; } int getMaxSum(int * arr) { int result = 0; int tmp = 0; for (int i = 0; i < 10; i++) { if (tmp>0) { tmp += arr[i]; } else { tmp = arr[i]; } if (tmp > result) result = tmp; } return result; } using namespace std; void main() { int arr[10] = { 1, -3, 8, -6, 2, -3,4, 8, -11, 12 }; int max = GetMax( arr); if (max <= 0) { cout << "最大子数组和为" << max; cin.get(); return; } int result = getMaxSum(arr); cout << "最大子数组和为" << result; cin.get(); }
求子数组的最大和要求O(n)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。