Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

K và -K trong Python


Cho danh sách nums, tìm số lớn nhất k sao cho cả k và -k đều tồn tại trong nums (có thể là cùng một số). Nếu không có, trả về -1.

Ví dụ, [-5, 2, 9, -6, 5, -9], đầu ra 9.

Các bước giải quyết:

  • L1 := các phần tử >= 0 trong nums.
  • L2 := các phần tử <= 0 trong nums.
  • Sắp xếp L1 giảm dần, L2 tăng dần.
  • Duyệt i trong L1:
    • Duyệt j trong L2:
      • Nếu i + j == 0, trả về i.
      • Ngược lại nếu i + j > 0, thoát vòng lặp trong.
  • Trả về -1.

Ví dụ minh họa

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))

Đầu vào

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

Đầu ra

9