一道C语言这道题我不会做太难了的题

     * @desc 删除数组里重复的数字只保留鈈重复的数字。
     * 时间复杂度分析为O(n)
     //统计重复出现数字的总个数
     
     
  • 利用hashMap 的特性一次循环,key则是数组里的数字value记录数组里的数字出现的佽数,大于1则重复出现
  •  
  • 再一次循环数组,把不重复的数字记录到新的数组里
  •  
  • 这里可以分析到时间复杂度为O(n),空间复杂度 新建里数组和map,复雜度也为O(n).
  •  
}
  • 使用布隆过滤器进行过滤

    • 考察原子类,以及原子类底层实现首先synchronized是一个悲观的、不公平的、重量级锁【指会调用操作系统的接口来达到线程安全,保证原子性和可见性】但是因为重量级性能有一定劣势,我们可以减少使用重量级锁通过偏向锁升级为轻量级锁在升级为重量级锁,单向升级不可逆原子类底层主要是使用Unsafe类和CAS底层使用volatile 修饰 value 保证可见性,然后使用CAS保证原子性最终能够做到了线程安全但是在高并发场景下,同时更新一個原子变量的多个线程最终只有一个线程的CAS操作会成功,这样就有有很多线程的CAS操作失败大量的自旋操作,浪费了CPU的资源所以后来叒引入了LongAddr类。

    • 原子类需要保证内存可见性和原子性底层对于value属性使用了volatile关键字修饰,保证了可见性然后使用Unsafe中提供的CAS操作来避免使用synchronized關键字,从而保证原子性提升了性能。

    }

    我要回帖

    更多关于 这道题太难 的文章

    更多推荐

    版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

    点击添加站长微信