สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งมีความยาวอย่างน้อย 2 เราต้องหาดัชนีของทุกยอดในรายการ รายการจะเรียงลำดับจากน้อยไปมาก ดัชนี i เป็นจุดสูงสุดเมื่อ −
-
nums[i]> nums[i + 1] เมื่อ i =0
-
nums[i]> nums[i - 1] เมื่อ i =n - 1
-
nums[i - 1]
nums[i + 1] อื่น ๆ
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5, 6, 7, 6, 9] ผลลัพธ์จะเป็น [2, 4] เนื่องจากองค์ประกอบที่ดัชนี 2 คือ 7 ซึ่งมากกว่าสองเพื่อนบ้าน และรายการที่ ดัชนี 4 คือ 9 ซึ่งมากกว่ารายการด้านซ้าย
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ans :=รายการใหม่
-
n :=ขนาดของ nums
-
ถ้า n เท่ากับ 1 แล้ว
-
กลับมาอีกครั้ง
-
-
สำหรับแต่ละดัชนี i และตัวเลข num เป็น nums ทำ
-
ถ้า i> 0 และฉัน
-
ถ้า nums[i - 1]
nums[i + 1] แล้ว -
ใส่ i ต่อท้าย ans
-
-
ถ้าฉันเหมือนกับ 0 แล้ว
-
ถ้า num> nums[i + 1] แล้ว
-
ใส่ i ต่อท้าย ans
-
-
-
ถ้าฉันเหมือนกับ n - 1 แล้ว
-
ถ้า num> nums[i - 1] แล้ว
-
ใส่ i ต่อท้าย ans
-
-
-
-
-
กลับมาอีกครั้ง
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
def solve(nums): ans = [] n = len(nums) if n == 1: return ans for i, num in enumerate(nums): if i > 0 and i < n - 1: if nums[i - 1] < num > nums[i + 1]: ans.append(i) if i == 0: if num > nums[i + 1]: ans.append(i) if i == n - 1: if num > nums[i - 1]: ans.append(i) return ans nums = [5, 6, 7, 6, 9] print(solve(nums))
อินพุต
[5, 6, 7, 6, 9]
ผลลัพธ์
[2, 4]