不知道要拿来做什么但觉得很有意思的个人博客
747. 至少是其他数字两倍的最大数
747. 至少是其他数字两倍的最大数

747. 至少是其他数字两倍的最大数

给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。

请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。

十分钟代码如下:

class Solution:
    def dominantIndex(self, nums: List[int]) -> int:
        if (n := len(nums)) == 1:
            return 0
        max_index = 0
        first = 0
        second = 0
        for i in range(n):
            if nums[i] > first:
                second = first
                first = nums[i]
                max_index = i
            elif nums[i] > second:
                second = nums[i]
        return (max_index if first >= 2*second else -1)

执行用时:36 ms, 在所有 Python3 提交中击败了41.43%的用户

内存消耗:15 MB, 在所有 Python3 提交中击败了29.92%的用户

只能说几乎和官方写得一模一样,官方标答:

class Solution:
    def dominantIndex(self, nums: List[int]) -> int:
        m1, m2, idx = -1, -1, 0
        for i, num in enumerate(nums):
            if num > m1:
                m1, m2, idx = num, m1, i
            elif num > m2:
                m2 = num
        return idx if m1 >= m2 * 2 else -1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

发表评论

您的电子邮箱地址不会被公开。