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

Bài đăng phổ biến