สมมติว่าเรามีอาร์เรย์จำนวนเต็มที่เรียกว่า nums ตอนนี้จะมีหนึ่งองค์ประกอบที่ใหญ่ที่สุดเสมอ เราต้องตรวจสอบว่าองค์ประกอบที่ใหญ่ที่สุดในอาร์เรย์อย่างน้อยสองเท่าของตัวเลขอื่น ๆ ในอาร์เรย์ หากเป็นเช่นนั้น เราก็ต้องหาดัชนีขององค์ประกอบที่ใหญ่ที่สุด มิฉะนั้น ให้คืนค่า -1
ดังนั้น หากอินพุตเป็น [3,6,1,0] เอาต์พุตจะเป็น 1 เนื่องจาก 6 เป็นจำนวนที่มากที่สุด และสำหรับจำนวนอื่นๆ ในอาร์เรย์ x 6 มีขนาดใหญ่กว่า x สองเท่า . เนื่องจากดัชนีของ 6 คือ 1 ดังนั้นผลลัพธ์จึงเป็น 1 ด้วย
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สูงสุด :=สูงสุดของ nums
- สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
- ถ้า nums[i] เท่ากับค่าสูงสุด แล้ว
- maxindex :=ฉัน
- ถ้า nums[i] ไม่เหมือนกับค่าสูงสุดและค่าสูงสุด <2*(nums[i]) แล้ว
- คืน -1
- ถ้า nums[i] เท่ากับค่าสูงสุด แล้ว
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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]))
อินพุต
[3, 6, 1, 0]
ผลลัพธ์
1