2013-07-17 29 views
5

Giả sử bạn có một số NSArray với các bản sao @[1,2,3,1,1,2,4,5,6];Tìm các bản sao trong NSArray

Tìm tất cả các bản sao; điều này có thể ở dạng giả mã. Đây là câu hỏi về thuật toán nhiều hơn một khung nền tảng (không sử dụng câu hỏi NSSet).

+2

Hãy nhìn vào NSCountedSet. Bạn có thể tạo một trong số đó từ mảng của bạn, sau đó lặp lại và xem cái nào có số lớn hơn 1. – rdelmar

+0

Tôi không bao giờ biết NSArray có thể lưu trữ trực tiếp các giá trị Integer. : O –

Trả lời

12

Sử dụng một NSCountedSet và chỉ in các yếu tố đó trả về một số> 1 cho countForObject: phương pháp

Tham khảo this để biết thêm thông tin

19

như @Lithu mô tả, sử dụng NSCountedSet, xem mã dưới đây.

NSArray *arr = [[NSArray alloc]initWithObjects:@(1),@(1),@(2), @(1),nil]; 
NSCountedSet *cs = [[NSCountedSet alloc] initWithArray:arr]; 
NSLog(@"object count greater than 1 are"); 
for(NSNumber *num in cs){ 
    if([cs countForObject:num]>1) 
    NSLog(@"%@",num); 
} 
+0

Điều này thật tuyệt vời! :) – Hemang

Các vấn đề liên quan