Giả sử chúng ta có một danh sách các số được gọi là num, chúng ta phải tìm số k lớn nhất mà k và -k đều tồn tại trong nums (chúng có thể là cùng một số). Nếu không có phần tử như vậy, hãy trả về -1.
Vì vậy, nếu đầu vào là [-5, 2, 9, -6, 5, -9], thì đầu ra sẽ là 9.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- L1:=danh sách 0 và các phần tử dương tính bằng nums
- L2:=danh sách 0 và các phần tử âm trong nums
- sắp xếp L1 theo thứ tự ngược lại
- sắp xếp danh sách L2
- đối với mỗi tôi trong L1, hãy thực hiện
- đối với mỗi j trong L2, thực hiện
- nếu i + j giống 0, thì
- trả lại tôi
- ngược lại khi i + j> 0, thì
- ra khỏi vòng lặp hiện tại
- nếu i + j giống 0, thì
- đối với mỗi j trong L2, thực hiện
- trả về -1
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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