【LeetCode每日一题】2270.分割数组的方案数

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])
js 复制代码
/**
 * @param {number[]} nums
 * @return {number}
 */
var waysToSplitArray = function(nums) {
    let preFixArr = [];
    let sum = 0
    for(let num of  nums){
        sum+=num;
        preFixArr.push(sum);
    }
    let res = 0;
    for(let i = 0;i<nums.length-1;i++){
        if(preFixArr[i]>=sum-preFixArr[i]){
            res ++;
        }
    }
    return res;

};

思路二:

根据上面的思路可以优化,只记录最大值,没有必要用数组记录每个元素的前缀和,只要每次遍历的时候left++,就能得到每次遍历左边的值。

js 复制代码
/**
 * @param {number[]} nums
 * @return {number}
 */
var waysToSplitArray = function(nums) {
    let sum = 0
    for(let num of  nums){
        sum+=num;
    }
    let res = 0;
    left = 0;
    for(let i = 0;i<nums.length-1;i++){
        left+=nums[i];
        if(left>=sum-left){
            res++;
        }
    }
    return res;

};
相关推荐
2301_764441335 小时前
LISA时空跃迁分析,地理时空分析
数据结构·python·算法
东北洗浴王子讲AI5 小时前
GPT-5.4辅助算法设计与优化:从理论到实践的系统方法
人工智能·gpt·算法·chatgpt
Billlly6 小时前
ABC 453 个人题解
算法·题解·atcoder
玉树临风ives6 小时前
atcoder ABC 452 题解
数据结构·算法
feifeigo1236 小时前
基于马尔可夫随机场模型的SAR图像变化检测源码实现
算法
fengfuyao9857 小时前
基于STM32的4轴步进电机加减速控制工程源码(梯形加减速算法)
网络·stm32·算法
无敌昊哥战神8 小时前
深入理解 C 语言:巧妙利用“0地址”手写 offsetof 宏与内存对齐机制
c语言·数据结构·算法
小白菜又菜8 小时前
Leetcode 2075. Decode the Slanted Ciphertext
算法·leetcode·职场和发展
Proxy_ZZ08 小时前
用Matlab绘制BER曲线对比SPA与Min-Sum性能
人工智能·算法·机器学习
黎阳之光8 小时前
黎阳之光:以视频孪生领跑全球,赋能数字孪生水利智能监测新征程
大数据·人工智能·算法·安全·数字孪生