算法

数组算法

2019-07-16  本文已影响0人  coderPoo

1、数组中不重复的数只有一个,并找出

思路 :初始化一个值 int a = 0; 遍历数组每个 item^a ;最后a的值就是不重复的值
时间 O(n) ,空间S(1)

2、数组中不重复的数大于一个,

思路 :遍历数组,使用map记录数字出现的次数;再遍历map,找出次数为1的数
时间 O(n) ,空间S(n)

3、找出第一个不重复的数

思路:1、两层for循环 O(n*n)

```
for (int i = 0; i < count; i++) {
    
        for (int j =0;j <count ;j++){
                if (i!=j && a[j]==a[i]) {    
                        return j;
              }
      }
    if    j = a.count -1 return 没找到;
}

2、第一次遍历数组,使用map记录记录每个元素的个数 map[value] ++;
                     第二次遍历,找到 第一个map[value] == 1的元素
    ```
      for (value in a) {
     
        map[value] ++;
    }

    for (value in a) {
        if (map[value] == 1) {
            return  value;
      }
   }

O(n) S(n)

4、数组中找到第一个重复的数字

思路:遍历数组,存入字典 map[value] ++;如果map[value] 包含这个数据说明已经存在

上一篇下一篇

猜你喜欢

热点阅读