zoukankan      html  css  js  c++  java
  • 关于NSArray的去重

    提到去重,第一反应就是for或while循环来遍历处理.

    然后有了几种思路:

    1) 两个循环嵌套 对比 然后去重:

    但是这种方法会数据丢失,

    arr为要去重的数组

    1  for (int i=0; i<arr.count; i++) {
    2     for(int j=0;j<arr.count;j++)
    3             if([arr[i]==arr[j]]){
    4                 [arr removeObjectAtIndex:j];
    5             }
    6         }

    2) 然后就是 第 i 个 元素 与  第 i+1 个元素比对 去重

     for (int i=0; i<arr.count-1; i++) {
                if([arr[i] isEqualToString:arr[i+1]]){
                    [arr removeObjectAtIndex:i];
                    i--; //因为去除一个元素后arr.count也发生了改变,所以这里也要将i--
                }
            }

    上面这种方法大致可以去重了,但是,如果最后一位元素与第一位元素相同,那么,你也是去不掉..

    3)完美去重的方法:

    所以在这里,我们新建一个可变数组,然后将原数组做一个isEqualTo的判断,再添加进新数组.

        NSMutableArray *newArr = [NSMutableArray array];
        for (int i=0; i<arr.count-1; i++) {
                if([newArr containsObject:[arr objectAtIndex:i]]==0){
                    [newArr addObject:[arr objectAtIndex:i]];
                }
            }
  • 相关阅读:
    洛谷P3796
    cf1291c-Mind Control
    莫比乌斯函数
    C. Mixing Water(三分)
    E. Modular Stability(思维构造)
    【美团杯2020】平行四边形
    原根定义
    E. Are You Fired?(思维)
    102606C. Coronavirus Battle time limit per test4 seconds(三维拓扑序)
    E
  • 原文地址:https://www.cnblogs.com/qls1992/p/5325175.html
Copyright © 2011-2022 走看看