Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาสถานะสุดท้ายของจรวดหลังจากการชนกันใน python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งแสดงถึงขนาดและทิศทางของจรวด จำนวนเต็มบวกหมายถึงด้านขวา และจำนวนลบหมายถึงด้านซ้าย และค่าสัมบูรณ์ของตัวเลขแสดงถึงขนาดของจรวด ตอนนี้เมื่อจรวดสองลูกชนกัน จรวดขนาดเล็กกว่าจะถูกทำลาย และจรวดขนาดใหญ่กว่าจะเดินทางต่อไปโดยไม่เปลี่ยนแปลง เมื่อพวกมันเป็นจรวดขนาดเดียวกันและชนกัน พวกมันจะทำลายทั้งคู่ เมื่อจรวดสองตัวเคลื่อนที่ไปในทิศทางเดียวกัน พวกมันจะไม่ชนกัน (สมมติว่าความเร็วของจรวดเท่ากัน) เราต้องหาสถานะของจรวดหลังจากการชนกันทั้งหมด

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3, 8, 5, -5] เอาต์พุตจะเป็น [3, 8] เนื่องจาก 5 และ -5 จะถูกทำลาย ส่วนที่เหลือจะคงอยู่

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ls :=รายการใหม่ที่มีหนึ่งองค์ประกอบ nums[0]
  • สำหรับฉันในช่วง 1 ถึงขนาดของ nums - 1 ทำ
    • ถ้า nums[i]>=0 แล้ว
      • ใส่ nums[i] ต่อท้าย ls
    • มิฉะนั้น
      • ใส่ nums[i] ต่อท้าย ls
      • j :=ขนาดของ ls - 2
      • ในขณะที่ j>=0 และ ls[j]>=0, ทำ
        • ถ้า |องค์ประกอบสุดท้ายของ ls|> ls[j] แล้วก็
          • ลบองค์ประกอบ jth ออกจาก ls
        • มิฉะนั้น เมื่อ |องค์ประกอบสุดท้ายของ ls| เหมือนกับ ls[j] แล้ว
          • ลบองค์ประกอบ jth ออกจาก ls
          • ลบองค์ประกอบสุดท้ายออกจาก ls
          • ออกมาจากวงจร
        • มิฉะนั้น
          • ลบ -องค์ประกอบสุดท้ายจาก ls
          • ออกมาจากวงจร
        • j :=j - 1
  • ผลตอบแทน ls

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, nums):
      ls = [nums[0]]
      for i in range(1, len(nums)):
         if nums[i] >= 0:
            ls.append(nums[i])
         else:
            ls.append(nums[i])
            j = len(ls) - 2
            while j >= 0 and ls[j] >= 0:
               if abs(ls[-1]) > ls[j]:
                  ls.pop(j)
               elif abs(ls[-1]) == ls[j]:
                  ls.pop(j)
                  ls.pop(-1)
                  break
               else:
                  ls.pop(-1)
                  break
               j -= 1
      return ls

ob = Solution()
nums = [3, 8, 5, -5]
print(ob.solve(nums))

อินพุต

[3, 8, 5, -5]

ผลลัพธ์

[3, 8]