给你一个整数数组 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。