贸易公司网站建,适合夫妻看的哔哩哔哩电视剧,ps5如何定制网络,网奇seo培训官网给你一个整数数组 nums #xff0c;请你找出一个具有最大和的连续子数组#xff08;子数组最少包含一个元素#xff09;#xff0c;返回其最大和。
子数组 是数组中的一个连续部分。
思路一#xff1a;前缀和
int maxSubArray(int* nums, int numsSize){int sum0,ans0,…给你一个整数数组 nums 请你找出一个具有最大和的连续子数组子数组最少包含一个元素返回其最大和。
子数组 是数组中的一个连续部分。
思路一前缀和
int maxSubArray(int* nums, int numsSize){int sum0,ans0,tempnums[0],flag1;for(int i1;inumsSize;i){if(temp0nums[i]0tempnums[i]){tempnums[i];}if(nums[i]0){flag0;break;} }if(flag1)return temp;for(int i0;inumsSize;i){if(sumnums[i]0){sum0;}else{sumsumnums[i];if(anssum)anssum;}}return ans;
}
时间复杂度O(n)空间复杂度O(1)
分析
本题要求最大子数组和可考虑先求出每个元素的前缀和再判断是否前缀和加现元素是否大于原返回值从而得到答案。编写的过程中需考虑数组中全为负数的情况此处先遍历完整个数组判断是否整个数组均为负数后计算前缀和最后返回ans
总结
本题考察对数组的应用前缀和的方法利用前缀和的知识便可解决此问题。