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

K และ -K ใน Python

สมมติว่าเรามีรายการตัวเลขชื่อ nums เราต้องหาตัวเลข k ที่มากที่สุด โดยที่ k และ -k ทั้งคู่อยู่ใน nums (อาจเป็นตัวเลขเดียวกันได้) หากไม่มีองค์ประกอบดังกล่าว ให้คืนค่า -1

ตัวอย่าง

หากอินพุตคือ [-5, 2, 9, -6, 5, -9] ผลลัพธ์จะเป็น 9

ขั้นตอนการแก้ปัญหา

  1. L1 := รายการขององค์ประกอบ 0 และบวกใน nums
  2. L2 := รายการขององค์ประกอบ 0 และลบใน nums
  3. เรียง L1 ในลำดับย้อนกลับ
  4. เรียง L2
  5. สำหรับแต่ละ i ใน L1:
    • สำหรับแต่ละ j ใน L2:
      • ถ้า i + j == 0 ให้คืนค่า i
      • อื่นๆ ถ้า i + j > 0 ให้ออกจากลูปปัจจุบัน
  6. คืนค่า -1

การใช้งาน

class Solution:
    def solve(self, nums):
        L1 = [i for i in nums if i >= 0]
        L2 = [i for i in nums if i <= 0]
        L1.sort(reverse=True)
        L2.sort()
        for i in L1:
            for j in L2:
                if i + j == 0:
                    return i
                elif i + j > 0:
                    break
        return -1

ob = Solution()
nums = [-5, 2, 9, -6, 5, -9]
print(ob.solve(nums))

อินพุต

[-5, 2, 9, -6, 5, -9]

เอาต์พุต

9