题目:至少是其他数字两倍的最大数
在一个给定的数组nums中,总是存在一个最大元素 。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
示例 :
输入: nums = [3, 6, 1, 0], 输出: 1
解释: 6是最大的整数, 对于数组中的其他整数, 6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
输入: nums = [1, 2, 3, 4], 输出: -1
解释: 4没有超过3的两倍大, 所以我们返回 -1.
提示:
nums 的长度范围在[1, 50]. 每个 nums[i] 的整数范围在 [0, 99].
------------------------------------------------------------------------
解法1: 通过 max()函数 + sort()函数 实现
class Solution(object):
def dominantIndex(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 1:
return 0
maX = nums.index(max(nums))
nums.sort()
if nums[-1] >= 2*nums[-2]:
return maX
return -1
解法2:2步枚举 enumerate()
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
enumerate(sequence, [start=0])
class Solution:
def dominantIndex(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 1:
return 0
max_num = max(nums)
for i, num in enumerate(nums):
if max_num == num:
maX = i
# 如果任意一个元素的值的2倍大于最大值,返回-1
for i, num in enumerate(nums):
if num != max_num and 2*num > max_num:
return -1
return maX
参考:
https://www.runoob.com/python/python-func-enumerate.html