个性化定制网站,网络销售是做什么,企业网站排名怎么优化,个人房产信息查询网站https://leetcode.cn/problems/number-of-ways-to-split-array/description/
题目#xff1a;
给定一个数组#xff0c;从 下标为 index 的地方切开#xff0c;左边的数大于右边#xff0c;保证右边至少有一个数。 思路一#xff1a;
遍历数组#xff0c;用prefixArr …https://leetcode.cn/problems/number-of-ways-to-split-array/description/
题目
给定一个数组从 下标为 index 的地方切开左边的数大于右边保证右边至少有一个数。 思路一
遍历数组用prefixArr 记录每个元素的前缀和。再遍历 prefixArr。 index 最大只能取到 prefix.length -2。 因为要保证右边至少有一个数。左边的数prefixArr ≥ 右边的数prefixArr[prefixArr.length-1]-preArr[i]
/*** param {number[]} nums* return {number}*/
var waysToSplitArray function(nums) {let preFixArr [];let sum 0for(let num of nums){sumnum;preFixArr.push(sum);}let res 0;for(let i 0;inums.length-1;i){if(preFixArr[i]sum-preFixArr[i]){res ;}}return res;};思路二
根据上面的思路可以优化只记录最大值没有必要用数组记录每个元素的前缀和只要每次遍历的时候left就能得到每次遍历左边的值。
/*** param {number[]} nums* return {number}*/
var waysToSplitArray function(nums) {let sum 0for(let num of nums){sumnum;}let res 0;left 0;for(let i 0;inums.length-1;i){leftnums[i];if(leftsum-left){res;}}return res;};