สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องหาลำดับย่อยของขนาด k ที่เล็กที่สุดในเชิงพจนานุกรม
ดังนั้น หากอินพุตเป็น nums =[2, 3, 1, 10, 3, 4] k =3 ผลลัพธ์จะเป็น [1, 3, 4]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- l :=ขนาดของ nums, r :=k - 1
- ออก :=รายการใหม่
- สำหรับ j ในช่วง 0 ถึง k ทำ
- mn :=nums[ส่วนเติมเต็มของ r]
- สำหรับฉันอยู่ในช่วง r ถึง l ทำ
- ถ้า mn>=nums[ส่วนเติมเต็มของ i] แล้ว
- mn :=nums[ส่วนเติมเต็มของ i]
- l :=ฉัน
- ถ้า mn>=nums[ส่วนเติมเต็มของ i] แล้ว
- r :=r - 1
- แทรก mn ที่ส่วนท้ายของการออก
- คืนสินค้า
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
class Solution: def solve(self, nums, k): l, r = len(nums), k - 1 out = [] for j in range(k): mn = nums[~r] for i in range(r, l): if mn >= nums[~i]: mn = nums[~i] l = i r -= 1 out.append(mn) return out ob = Solution() nums = [2, 3, 1, 10, 3, 4] k = 3 print(ob.solve(nums, k))
อินพุต
[2, 3, 1, 10, 3, 4], 3
ผลลัพธ์
[1, 3, 4]