Mô tả
Tại phân xưởng đóng gói pin PiPo, công nhân sắp các hộp pin lên băng chuyền theo một dãy mã vạch chuẩn. Thỉnh thoảng do vội vàng, công nhân vô tình nhặt nhầm và đảo vị trí của đúng hai hộp pin đang đứng liền nhau trên băng chuyền. Tổ kiểm soát chất lượng muốn xác minh xem dãy mã vạch thực tế có phải chỉ bị lỗi đảo đúng một cặp liền kề so với danh sách chuẩn ban đầu hay không, để rồi nhanh chóng điều chỉnh lại.
Nhiệm vụ của bạn là cho trước hai dãy số nguyên A và B có cùng độ dài n. Hãy kiểm tra xem B có thu được từ A bằng cách đổi chỗ đúng một cặp phần tử liền kề duy nhất hay không. Nếu đúng trả về true, ngược lại trả về false.
Lưu ý rằng B phải khác A và phải có đúng một cặp (hai phần tử) kề nhau trong A bị đổi chỗ cho nhau.
Đầu vào
Hai mảng số nguyên A và B, mỗi mảng có n phần tử.
Đầu ra
Trả về một giá trị luận lý: true nếu B là kết quả của việc đảo đúng một cặp phần tử liền kề từ A, ngược lại trả về false.
Ràng buộc
- 2 ≤ n ≤ 10^5
- Mỗi phần tử trong A và B là số nguyên có giá trị tuyệt đối không vượt quá 10^9.
Ví dụ
Ví dụ 1:
- A = [5, 7, 2, 8, 3]
- B = [5, 2, 7, 8, 3]
- Kết quả:
true
Giải thích: Tại vị trí thứ 2 và thứ 3 (tính từ 1), số 7 và số 2 đã đổi chỗ cho nhau, tạo thành một cặp liền kề duy nhất bị lệch. Các vị trí còn lại đều giữ nguyên, nên kết quả là true.
Ví dụ 2:
- A = [5, 7, 2, 8, 3]
- B = [5, 7, 2, 8, 3]
- Kết quả:
false
Giải thích: Hai dãy giống hệt nhau, không có cặp nào bị đảo cả, nên không thỏa mãn điều kiện phải có đúng một cặp lệch.