Tôi đã thử rút ngắn câu hỏi của mình, nhưng đây là cách tốt nhất tôi có thể làm. Kể từ khi tôi đoán nó là khá khó khăn để hiểu những gì tôi cần, tôi sẽ cung cấp một ví dụ:Cách hiệu quả nhất để phát hiện và loại bỏ các phần tử trong mảng dựa trên giá trị đầu tiên và cuối cùng của các phần tử
Nói rằng tôi có các mảng sau:
$var = array(
array(1, 2, 3),
array(1, 3),
array(1, 2, 4, 3),
array(1, 3, 4)
);
Những gì tôi muốn là để loại bỏ tất cả các mảng từ $var
rằng có phần tử đầu tiên và cuối cùng giống với một mảng khác từ $var
nhưng có nhiều phần tử hơn phần tử thứ hai.
Vì vậy, các mảng sau đây cần được loại bỏ: (1, 2, 3)
và (1, 2, 4, 3)
vì cả hai đều bắt đầu với 1
và kết thúc bằng 3
và có những yếu tố hơn (1, 3)
, mà còn bắt đầu và kết thúc với 1
và 3
. (1, 3, 4)
nên vẫn còn, vì không có mảng nào khác bắt đầu bằng 1
và kết thúc bằng 4
và có ít thành phần hơn.
Tôi đang tìm cách hiệu quả nhất để thực hiện việc này, cả về bộ nhớ và thời gian. $var
có thể có tối đa 100 mảng và mỗi mảng riêng lẻ có thể có tối đa 10 phần tử trong đó. Tôi nghĩ về việc sử dụng một số loại so sánh giữa tất cả hai yếu tố (for(i=0;...) for(j=i+1;...) complexCompareFunction();
), nhưng tôi tin rằng điều này không phải là rất hiệu quả.
Bạn có trường hợp sử dụng cho những gì bạn đang cố gắng làm không? Có thể có cách tốt hơn để thực hiện nó ... – Josh
Tôi đang tạo tất cả các kết hợp của các tuyến giao thông công cộng liên kết hai địa điểm do người dùng chọn. Từ mảng kết hợp dòng được tạo ra ('$ var' trong trường hợp này), tôi muốn xóa các kết hợp có sử dụng dòng thừa. Vì vậy, nếu người ta có thể đạt đến điểm thứ hai với các dòng '(1, 3)', tại sao nên '(1, 2, 3)' cũng được hiển thị? Ở đây, dòng '2' là phụ, người ta có thể đến đích mà không có nó. – linkyndy
có thể để đi 1,2,3 sẽ mất ít thời gian hơn (vì bạn đi bằng tàu hỏa) hơn 1,3 (vì bạn chỉ có thể đi bằng xe buýt trực tiếp). chúng ta có thể tái tạo lại vấn đề: có một đồ thị với các trạm như các nút và các kết nối như các cạnh. cho mỗi hai nút n, m bạn bây giờ tìm kiếm đường đi ngắn nhất bắt đầu bằng n và kết thúc bằng m. có rất nhiều tài liệu tham khảo ngoài chủ đề này. – Basti