首页 > 其他分享 >[LeetCode] 2789. Largest Element in an Array after Merge Operations

[LeetCode] 2789. Largest Element in an Array after Merge Operations

时间:2024-03-14 15:44:46浏览次数:37  
标签:Operations nums sum after 2789 will resulting Choose array

You are given a 0-indexed array nums consisting of positive integers.

You can do the following operation on the array any number of times:
Choose an integer i such that 0 <= i < nums.length - 1 and nums[i] <= nums[i + 1]. Replace the element nums[i + 1] with nums[i] + nums[i + 1] and delete the element nums[i] from the array.
Return the value of the largest element that you can possibly obtain in the final array.

Example 1:
Input: nums = [2,3,7,9,3]
Output: 21
Explanation: We can apply the following operations on the array:

  • Choose i = 0. The resulting array will be nums = [5,7,9,3].
  • Choose i = 1. The resulting array will be nums = [5,16,3].
  • Choose i = 0. The resulting array will be nums = [21,3].
    The largest element in the final array is 21. It can be shown that we cannot obtain a larger element.

Example 2:
Input: nums = [5,3,3]
Output: 11
Explanation: We can do the following operations on the array:

  • Choose i = 1. The resulting array will be nums = [5,6].
  • Choose i = 0. The resulting array will be nums = [11].
    There is only one element in the final array, which is 11.

Constraints:
1 <= nums.length <= 105
1 <= nums[i] <= 106

合并后数组中的最大元素。

给你一个下标从 0 开始、由正整数组成的数组 nums 。

你可以在数组上执行下述操作 任意 次:
选中一个同时满足 0 <= i < nums.length - 1 和 nums[i] <= nums[i + 1] 的整数 i 。将元素 nums[i + 1] 替换为 nums[i] + nums[i + 1] ,并从数组中删除元素 nums[i] 。

返回你可以从最终数组中获得的 最大 元素的值。

思路

思路是贪心。对于数组中的元素,只有满足 nums[i] <= nums[i + 1] 的时候,才能将 nums[i + 1] 替换为 nums[i] + nums[i + 1],那么比较自然的想法是可以从数组的最右侧开始往左扫描,如果发现某个元素 nums[i] >= nums[i - 1],就可以将 nums[i] 累加到 nums[i - 1] 上。这里我用一个变量 sum 来统计过程中能找到的最大的累加和。如果发现某个元素 nums[i] > sum,则说明从右往左扫的时候需要在这里停下,sum 要从 nums[i] 开始重新统计。

复杂度

时间O(n)
空间O(1)

代码

Java实现

class Solution {
    public long maxArrayValue(int[] nums) {
        int n = nums.length;
        long sum = nums[n - 1];
        for (int i = n - 2; i >= 0; i--) {
            if (sum >= nums[i]) {
                sum += (long) nums[i];
            } else {
                sum = (long) nums[i];
            }
        }
        return sum;
    }
}

标签:Operations,nums,sum,after,2789,will,resulting,Choose,array
From: https://www.cnblogs.com/cnoodle/p/18073027

相关文章

  • leetcode: 2789. 合并数组中的最大元素
    给你一个下标从 0 开始、由正整数组成的数组 nums 。你可以在数组上执行下述操作 任意 次:选中一个同时满足 0<=i<nums.length-1 和 nums[i]<=nums[i+1] 的整数 i 。将元素 nums[i+1] 替换为 nums[i]+nums[i+1] ,并从数组中删除元素 nums[i] ......
  • P.A.R.A第二部分:操作手册(PARA Part 2: Operations Manual)
    内容简介: P.A.R.A是一个轻量级的个人知识管理系统,可以减轻大脑负担,提高工作生活的效率。第一部分,主要讲的是理论,这一篇(第二部分),侧重于实践:如何区分“项目”和“领域”、“资源”和“领域”,文件如何在四个大类之间流转及常见问题。读完本文后,对如何选择P.A.R.A的分类,会有更深的理......
  • Memberinfo call generic method System.InvalidOperationException: 'Late bound op
    staticvoidMain(string[]args){GenericMethod();LogInfo();}staticvoidGenericMethod(){MethodInfomi=typeof(Program).GetMethod("Echo");Console.WriteLine(mi.IsGenericMethodDefinition);Console.WriteLine(mi.Invoke(......
  • Laura and Operations
    观察样例,感觉可以从奇偶性来搞假设我们最后要保留数字\(1\)。我们每操作一次数字\(2\)和数字\(3\),他们两个的相对奇偶性不变;每操作一次数字\(1\)和数字\(3\),数字\(2\)和数字\(3\)的奇偶性也不变;每操作一次数字\(1\)和数字\(2\),数字\(2\)和数字\(3\)的奇偶性也不变也就是说无论我......
  • 理解LLMOps: Large Language Model Operations
    理解LLMOps:LargeLanguageModelOperations对于像我一样的小白来说,本文是一篇非常不错的LLMs入门介绍文档。来自:UnderstandingLLMOps:LargeLanguageModelOperations本文首先解释了新术语"LLMOps"及其背景,然后讨论使用LLMs和传统ML模型构建AI产品的不同之处,并基于这些......
  • Go 100 mistakes - #76: time.After and memory leaks
       ......
  • VMware Aria Operations for Logs 8.16 - 集中式日志管理
    VMwareAriaOperationsforLogs8.16-集中式日志管理请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-logs/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org集中式日志管理VMwareAriaOperationsforLogs(以前称为vRealizeLogInsight)通......
  • VMware Aria Operations 8.16 - 多云 IT 运维管理
    VMwareAriaOperations8.16-多云IT运维管理通过统一的高性能平台,实现跨私有云、混合云和多云环境的IT运维管理。请访问原文链接:https://sysin.org/blog/vmware-aria-operations/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org自动驾驶式IT运维管理VMwar......
  • Minimize OR of Remaining Elements Using Operations
    MinimizeORofRemainingElementsUsingOperationsYouaregivena 0-indexed integerarray nums andaninteger k.Inoneoperation,youcanpickanyindex i of nums suchthat 0<=i<nums.length-1 andreplace nums[i] and nums[i+1] withas......
  • Minecraft Fabric模组开发时遇到报错-Failed download after 3 attempts
    MinecraftFabric模组开发时遇到报错-Faileddownloadafter3attempts遇到的主要报错如下(当然以下只是一部分报错)Aproblemoccurredconfiguringrootproject'tuuorial_mod'.Failedtonotifyprojectevaluationlistener.FailedtosetupMinecraft,java.io.Unchecke......