Giả sử ta có một mảng nguyên nums, trong đó luôn có đúng một phần tử lớn nhất. Ta cần kiểm tra xem phần tử lớn nhất trong mảng có lớn hơn hoặc bằng gấp đôi mọi số khác trong mảng hay không. Nếu có, tìm chỉ số của phần tử lớn nhất, ngược lại trả về -1.
Ví dụ, nếu đầu vào là [3,6,1,0], thì đầu ra sẽ là 1, vì 6 là số lớn nhất, và đối với mọi số khác x trong mảng, 6 lớn hơn gấp đôi x. Vì chỉ số của 6 là 1, nên đầu ra cũng là 1.
Để giải quyết, ta thực hiện các bước sau:
- maximum := giá trị lớn nhất của nums
- Với i từ 0 đến kích thước nums, thực hiện:
- Nếu nums[i] bằng maximum, thì:
- maxindex := i
- Nếu nums[i] khác maximum và maximum < 2*(nums[i]), thì:
- Trả về -1
- Nếu nums[i] bằng maximum, thì:
Hãy xem triển khai sau để hiểu rõ hơn:
Ví dụ
class Solution: def dominantIndex(self, nums): maximum = max(nums) for i in range(len(nums)): if nums[i] == maximum: maxindex = i if nums[i] != maximum and maximum < 2*(nums[i]): return -1 return maxindex ob = Solution() print(ob.dominantIndex([3, 6, 1, 0]))
Đầu vào
[3, 6, 1, 0]
Đầu ra
1