Danh sách

Bộ ba số có tổng bằng 0 (3Sum)

Trung bình
Hai Con Trỏ & Cửa Sổ Trượt (Two Pointers & Sliding Window) 1200ms 256MB

Cho một mảng các số nguyên nums. Hãy tìm tất cả các bộ ba [nums[i], nums[j], nums[k]] sao cho i != j, i != k, j != k và nums[i] + nums[j] + nums[k] == 0.

Lưu ý: Bộ nghiệm trả về không được chứa các bộ ba trùng lặp.

Ví dụ 1:

Input: nums = [-1, 0, 1, 2, -1, -4]
Output: [[-1, -1, 2], [-1, 0, 1]]
Định Dạng Đầu Vào (Input)
Một dòng chứa mảng số nguyên nums
Định Dạng Đầu Ra (Output)
Mảng 2D chứa các bộ ba số có tổng bằng 0
Ràng Buộc (Constraints)
  • 3 <= nums.length <= 3000
Ví Dụ Kiểm Thử Mẫu
Ví dụ 1:
Input:
[-1, 0, 1, 2, -1, -4]
Output:
[[-1,-1,2],[-1,0,1]]
Giải thích: 2 bộ ba
Ví dụ 2:
Input:
[0, 1, 1]
Output:
[]
Giải thích: Không có bộ nào = 0
Gợi ý được sắp xếp theo cấp độ tiến dần. Hãy mở từng gợi ý khi bạn thực sự cần thêm định hướng.

Kỹ thuật Sắp Xếp + Two Pointers O(n^2)

Sắp xếp mảng tăng dần. Duyệt qua từng số nums[i] (bỏ qua nếu trùng số trước). Với mỗi i, đặt left = i + 1 và right = n - 1, áp dụng kỹ thuật Two Pointers tìm cặp có tổng bằng -nums[i].

Vui lòng đăng nhập

Đăng nhập tài khoản học viên để xem lịch sử nộp bài của bạn.

Đăng nhập
Ctrl + Enter: Chạy thử
Dữ liệu đầu vào (Input):
[-1, 0, 1, 2, -1, -4]
Kết quả kỳ vọng (Expected Output):
[[-1,-1,2],[-1,0,1]]
Dữ liệu đầu vào (Input):
[0, 1, 1]
Kết quả kỳ vọng (Expected Output):
[]
Nhập STDIN của bạn (Mỗi dòng một tham số):

Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.

Đang gửi mã và thực thi trên Sandbox Engine...
Nhấn Ctrl+Enter để chạy

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học