数据结构与算法之LeetCode-1413. 逐步求和得到正数的最小值(贪心与排序)

news/2024/7/4 23:09:36

1413. 逐步求和得到正数的最小值 - 力扣(LeetCode)

/**
 * @param {number[]} nums
 * @return {number}
 */
 var minStartValue = function(nums) {
    let prev = 0,positive = false;
    for(let i=0;i<nums.length;i++){
        prev += nums[i]
        nums[i] = prev;
        if(prev>1){
            positive = true;
        }else{
            positive = false;
        }
    }

    prev = Math.min(...nums)
    if(prev<1){
        return -prev+1
    }else if(prev>=1){
        if(positive){
            return 1
        }
        return prev
    }
};

执行结果:通过

执行用时:68 ms, 在所有 JavaScript 提交中击败了16.47%的用户

内存消耗:41.1 MB, 在所有 JavaScript 提交中击败了41.18%的用户

通过测试用例:55 / 55

/**
 * @param {number[]} nums
 * @return {number}
 */
 var minStartValue = function(nums) {
    let prev = 0,positive = false,min=Infinity;
    for(let i=0;i<nums.length;i++){
        prev += nums[i]
        nums[i] = prev;
        if(prev<min){
            min = prev;
        }
        if(prev>1){
            positive = true;
        }else{
            positive = false;
        }
    }

    prev = min; // Math.min(...nums)
    if(prev<1){
        return -prev+1
    }else if(prev>=1){
        if(positive){
            return 1
        }
        return prev
    }
};

执行结果:通过

执行用时:60 ms, 在所有 JavaScript 提交中击败了61.18%的用户

内存消耗:40.8 MB, 在所有 JavaScript 提交中击败了84.71%的用户

通过测试用例:55 / 55

var minStartValue = function(nums) {
    let accSum = 0, accSumMin = 0;
    for (const num of nums) {
        accSum += num;
        accSumMin = Math.min(accSumMin, accSum);
    }
    return -accSumMin + 1;
};

执行结果:通过

执行用时:60 ms, 在所有 JavaScript 提交中击败了61.18%的用户

内存消耗:41.4 MB, 在所有 JavaScript 提交中击败了8.23%的用户

通过测试用例:55 / 55

参考链接

1413. 逐步求和得到正数的最小值 - 力扣(LeetCode)

逐步求和得到正数的最小值 - 逐步求和得到正数的最小值 - 力扣(LeetCode)


http://www.niftyadmin.cn/n/4426646.html

相关文章

pro*c创建同一个数据库的多个连接

1、一般情况下我们使用的都是创建一个连接,此连接并没有什么名字来代表。我们可以使用AT关键字来创建同一个数据库的多个连接,具体资料可以看这里:https://docs.oracle.com/cd/B13789_01/appdev.101/a97269/pc_03dbc.htm#sthref298。 2.具体来看如何使用AT关键字: (1)连…

数据结构与算法之LeetCode-640. 求解方程(数学模拟)

640. 求解方程 - 力扣&#xff08;LeetCode&#xff09; factor表示变量的系数&#xff0c;val表示常量值使用系数sign1表示默认系数&#xff0c;解析到等号时&#xff0c;说明解析到等式右边的项&#xff0c;令sign1 -1使用sign2表示项的符号&#xff0c;初识时sign2 sign1…

jquery过滤选择器-----------(基本过滤选择器)

1.介绍 2.常见基本过滤器 3.程序 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"UTF-8">5 <title>Insert title here</title>6 <style type"text/css">7 div, span, p {8 width: 140px;9 …

Carlos Antollini 封装的ADO类说明

https://www.codeproject.com/Articles/1075/A-set-of-ADO-classes-version-2-20#Sample07

使用tinyXML生成并解析XML文件

使用tinyXML生成并解析XML文件非常简单&#xff0c;网上资源很多&#xff0c;为了节省时间、少走弯路&#xff0c;现归纳出如下的各种文档参考&#xff1a; 1、timyXML库下载地址&#xff1a;https://download.csdn.net/download/u012372584/14035757 2、XML文件语法说明&…

数据结构与算法之LeetCode-662. 二叉树最大宽度 -(DFS,BFS)

662. 二叉树最大宽度 - 力扣&#xff08;LeetCode&#xff09; 根节点的位置为1&#xff08;index左子节点的位置就为1*2右子节点的位置就为1*21 节点下标会非常大&#xff08;2**3000&#xff09;个子节点&#xff0c;超过JS的number范围&#xff0c;因此需要使用bigint避免溢…

运维未来的发展方向是智能运维

近年来运维技术飞速发展&#xff0c;运维团队大多建设好了各种系统&#xff0c;虚拟化、容器化、持续集成等等。但是如何有效的利用这些系统最终实现站点的高可用、高性能、高可扩展&#xff1f;随着智能化技术的发展&#xff0c;为了解决上述运维领域的问题&#xff0c;智能运…

ocilib库的使用

1、ocilib库的下载:http://vrogier.github.io/ocilib/ 2、ocilib库参考手册:http://vrogier.github.io/ocilib/doc/html/index.html 3、ocilib库windows下的配置使用(下面说明来自于官方文件): Using OCILIB on Microsoft Windows OCILIB distribution packages provi…