最笨效率最低的辦法呻纹,兩個for循環(huán),找出出現(xiàn)相同數(shù)字的次數(shù)
- (void)test1{
NSArray *array = @[@"1",@"1",@"2",@"2",@"3",@"3",@"4",@"4",@"5",@"6"];
for (int i = 0; i < array.count; i++) {
NSString *itemi = array[i];
int count = 0;
for (int j = 0; j<array.count; j++) {
NSString *itemj = array[j];
if ([itemi isEqualToString:itemj]) {
count++;
}
}
if (count == 1) {
NSLog(@"只出現(xiàn)一次數(shù)為:%@", array[i]);
}
}
}
方法二
利用數(shù)組比較元素的方法专缠,如果數(shù)組中沒有出現(xiàn)該元素則添加雷酪,如果該元素出現(xiàn)了則刪除該元素
- (void)test2{
NSArray *array = @[@"1",@"1",@"2",@"2",@"3",@"3",@"4",@"4",@"5",@"6"];
NSMutableArray *mArray = [[NSMutableArray alloc] init];
for (int i = 0; i < array.count; i++) {
NSString *item = array[i];
if (![mArray containsObject:item]) {
[mArray addObject:item];
}else{
[mArray removeObject:item];
}
}
NSLog(@"只出現(xiàn)一次數(shù)為:%@", mArray);
}
方法三
直接遍歷整個數(shù)組,建成hash的數(shù)組涝婉。最后再遍歷一次hash哥力,取出對應(yīng)key的數(shù)組有幾個元素,如果有一個元素的key則是要找的只出現(xiàn)一次的元素墩弯。
- (void)test3{
NSArray *array = @[@"1",@"1",@"2",@"2",@"3",@"3",@"4",@"4",@"5",@"6"];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (int i = 0; i < array.count; i++) {
NSString *item = array[i];
// 如果字典中不存在該key
if (![[dict allKeys] containsObject:item]) {
NSMutableArray *mArray = [[NSMutableArray alloc] init];
[mArray addObject:item];
[dict setObject:mArray forKey:item];
}
else{
// 如果字典中存在key,則取出數(shù)組增加元素
NSMutableArray *mArray = [dict objectForKey:item];
[mArray addObject:item];
}
}
NSArray *keyArr = dict.allKeys;
// 遍歷字典吩跋,取出的數(shù)組如果只有一個元素的則是我們要找的
for (int i = 0; i < keyArr.count; i++) {
NSString *key = keyArr[i];
NSMutableArray *arr = [dict objectForKey:key];
if (arr.count == 1) {
NSLog(@"只出現(xiàn)一個數(shù)為:%@", key);
}
}
}