two pointer
bài toán
- cho 1 mảng các phần tử [1, 2, 3, 3, 3, 4, 5, 6,]
- yêu cầu swap phần tử có giá trị 3 xuống cuối mảng
- chỉ được thao tác trên đúng mảng đó (in-placed)
- phase 1: không quan tâm tới thứ tự các phần tử
- phase 2: giữ nguyên thứ tự các phần tử
ví dụ:
- swap 3 xuống cuối mảng [1, 2, 3, 3, 4, 5, 6, 3, 3] => [1, 2, 6, 5, 4, 3, 3, 3, 3]
lời giải phase 1
- cho con trỏ i chạy từ đầu mảng, con trỏ j chạy từ cuối mảng
- nếu i gặp value cần swap, thì j chạy để tìm value thay thế
- swap giá trị tại i và j cho nhau
- lặp lại cho đến khi i = j
lời giải cho phase 2
- cho con trỏ i chạy từ đầu mảng
- nếu i gặp value cần swap, thì j chạy từ i để tìm value thay thế
- swap giá trị tại i và j cho nhau
- lặp lại cho đến khi j không tìm được value thay thế
Nhận xét
Đăng nhận xét