最笨效率最低的办法,两个for循环,找出出现相同数字的次数
- (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(@"只出现一次数为:%@", array[i]);
}
}
}
方法二
利用数组比较元素的方法,如果数组中没有出现该元素则添加,如果该元素出现了则删除该元素
- (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(@"只出现一次数为:%@", mArray);
}
方法三
直接遍历整个数组,建成hash的数组。最后再遍历一次hash,取出对应key的数组有几个元素,如果有一个元素的key则是要找的只出现一次的元素。
- (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,则取出数组增加元素
NSMutableArray *mArray = [dict objectForKey:item];
[mArray addObject:item];
}
}
NSArray *keyArr = dict.allKeys;
// 遍历字典,取出的数组如果只有一个元素的则是我们要找的
for (int i = 0; i < keyArr.count; i++) {
NSString *key = keyArr[i];
NSMutableArray *arr = [dict objectForKey:key];
if (arr.count == 1) {
NSLog(@"只出现一个数为:%@", key);
}
}
}
网友评论