给定一个长度为
的数组,数组中的数为整数。
请你选择一个非空连续子数组,使该子数组所有数之和尽可能大。求这个最大值。
第一行为一个正整数,代表数组的长度。
第二行为个整数
,用空格隔开,代表数组中的每一个数。
连续子数组的最大之和。
3 3 -4 5
5
选择 [5] 这个子数组即可。
3 4 -3 5
6
选择 [4,-3,5] 这个子数组。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
let n=await readline();
let arr=(await readline()).split(" ").map(it=>parseInt(it));
let max=arr[0],sum=0;
for(let i=0;i<arr.length;i++){
sum+=arr[i];
if(arr[i]>sum) sum=arr[i];
if(sum>max) max=sum;
}
console.log(max);
}()
// javascript
const readline = require('readline');
const read = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let len = -1;
let nums;
// input nums
read.question("",function(length){
len = parseInt(length)
read.question("", function(numbers){
nums = numbers.trim().split(' ')
nums = nums.map(n=> parseInt(n));
read.close();
})
})
function maxSubArraySum(nums){
let max = nums[0], pre = nums[0];
for(let i = 1; i < nums.length; i++){
pre = Math.max(nums[i],nums[i]+pre);
max = Math.max(pre,max);
}
return max;
}
read.on('close',function(){
let max = maxSubArraySum(nums)
console.log(max)
process.exit(0);
})