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 trongnums.L2:= các phần tử <= 0 trongnums.- Sắp xếp
L1giảm dần,L2tăng dần. - Duyệt
itrongL1:- Duyệt
jtrongL2:- Nếu
i + j == 0, trả vềi. - Ngược lại nếu
i + j > 0, thoát vòng lặp trong.
- Nếu
- Duyệt
- 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