合并后数组中的最大元素
本文最后更新于 198 天前,其中的信息可能已经有所发展或是发生改变。

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

你可以在数组上执行下述操作 任意 次:

  • 选中一个同时满足 0 <= i < nums.length - 1 和 nums[i] <= nums[i + 1] 的整数 i 。将元素 nums[i + 1] 替换为 nums[i] + nums[i + 1] ,并从数组中删除元素 nums[i] 。

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

提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 106

示例 :

输入:nums = [2,3,7,9,3]

输出:21

解释:我们可以在数组上执行下述操作:

– 选中 i = 0 ,得到数组 nums = [5,7,9,3] 。

– 选中 i = 1 ,得到数组 nums = [5,16,3] 。

– 选中 i = 0 ,得到数组 nums = [21,3] 。

最终数组中的最大元素是 21 。可以证明我们无法获得更大的元素。

解法一:

class Solution(object):
    def maxArrayValue(self, nums):
        left=len(nums)-2
        right=len(nums)-1
        ret=nums[right]
        while left>= 0:
            if nums[left]<=nums[right]:
                nums[right]+=nums[left]
                nums[left]=-1   #将已经参与加法运算的数变为-1 ,这样就它就不会再进入nums[left]<=nums[right] 这个循环
                print(nums)
                left-=1
            else:
                right=left      #从最后两个数开始遍历
                left-=1
            ret=max(ret,nums[right])
        return ret

nums = [2, 11, 3, 7, 3]
obj = Solution()
obj.maxArrayValue(nums)

解法二(贪心 + 倒序遍历数组)

class Solution:
    def maxArrayValue(self, nums):
        for i in range(len(nums) - 2, -1, -1):
            if nums[i] <= nums[i + 1]:
                nums[i] += nums[i + 1]
        return nums[0]
合并后数组中的最大元素 : http://116.62.240.154:9520/maxarrayvalue/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇