ràng buộc:Với một mảng [A1B2C3D4] chuyển sang [abcd1234]
- O (1) không gian
- O (n) Thời gian
Nó không phải là một câu hỏi bài tập về nhà chỉ một câu hỏi thú vị tôi đã gặp.
Dưới đây là một số giải pháp mà tôi có thể nghĩ ra nhưng không có gì thực hiện trong các ràng buộc nhất định.
Phương pháp 1
* Với O (n) bộ nhớ *
- Divide mảng trong hai phần đệ quy. (tiếp tục chia cho đến khi kích thước < = 2 cho mỗi vấn đề phụ)
- Sắp xếp từng vấn đề phụ với mảng đầu tiên và số ở cuối.
- Merge tiểu vấn đề mảng
Phương pháp 2
Trong O (n log n) thời gian
- Sắp xếp mảng thứ tự từ điển dựa nó trở nên 1234abcd
- Đảo ngược cả hai nửa của mảng 4321dcba
- Đảo ngược toàn bộ chuỗi abcd1234
Phương pháp 3
Nếu phạm vi các số đã được xác định
Ngoài ra nếu trường hợp là con số trong một phạm vi cụ thể sau đó tôi có thể khởi tạo một int nói track = 0; Và đặt bit thích hợp khi tôi bắt gặp một số trong mảng ví dụ: (1 < < a [2]). 1. Hoán đổi bảng chữ cái thành nửa đầu của mảng 2. Đánh dấu số trong biến theo dõi 3. sau đó sử dụng bản nhạc để điền vào nửa sau của mảng.
Phương pháp 4 Chúng tôi có thể sử dụng Phương pháp 3 với HashMap nếu chúng tôi muốn loại bỏ ràng buộc phạm vi số nguyên nhưng sau đó sẽ cần nhiều bộ nhớ hơn.
Không thể nghĩ ra cách tốt hơn để giải quyết vấn đề chung trong khoảng thời gian O (1) và O (n).
Vấn đề Generic đây đề cập đến:
Cho một x1y1x2y2x3y3 chuỗi .... xnyn nơi x1, x2 là bảng chữ cái x1 < x2 < .... < xn và y1y2 ... yn là các số nguyên.y1 y2 < < .... < yn Sắp xếp các đầu ra như x1x2 ... xny1y2 ... yn
Bất kỳ lời đề nghị?
Bạn cần phải tìm ra cách sắp xếp lại 6 ký tự không quá 8 hành động. (Nhưng "hành động" có thể có nhiều hoán đổi, nếu cần, và vẫn duy trì thứ tự N.) (Và lưu ý rằng vấn đề, như bạn đã nói, không nói gì về sắp xếp, chỉ sắp xếp lại 8 ký tự thành một chuỗi được xác định.) –
@Hot Licks: Tôi đã thử thực sự nghĩ về những dòng này nhưng đã kết thúc với một giải pháp không phải là chung chung. 1.Swap trung tâm các yếu tố của nửa đầu tiên ví dụ như "1b" vì vậy chúng tôi nhận được ab12c3d4. 2. Hoán đổi các phần tử trung tâm của nửa sau ab12cd34. 3. Swap center 2 phần tử của mảng abcd1234 hoàn chỉnh. NHƯNG kỹ thuật này chỉ hoạt động nếu kích thước của mảng là bội số của 8. –
Xác định "chung" - bạn đã không nêu một vấn đề chung. Bạn đã đưa ra một ví dụ nhưng không có gợi ý như thế nào mà generalizes. –