算法与数据结构
仰望夜空一万次
记录一切美好事物。
展开
-
位运算解决只出现一次的数字问题
问题描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 不使用额外的空间,并且时间复杂度为线性。 输入: [2,2,1] 输出: 1 示例2: 输入: [4,1,2,1,2] 输出: 4 解题答案: 答案是使用位运算。对于这道题,可使用异或运算异或运算有以下三个性质。 1.任何数和0做异或运算,结果仍然是原来的数 2.任何数和其自身做异或运算,结果是0 3.异或运算满足交换律和结合律 参考:链接:https://leetcode-..原创 2020-09-04 16:15:49 · 215 阅读 · 0 评论 -
使用优先级队列PriorityQueue类解决topK问题
top K问题 求解第top K大的问题,通过priorityqueue构造小顶堆和限制堆的大小解决。 求解第top K小的问题,通过priorityqueue构造大顶堆和限制堆的大小解决。 参考:https://blog.csdn.net/hefenglian/article/details/81807527 非线程安全 此实现不是同步的。如果多个线程中的任意线程修改了队列,则这些线程不应同时访问 PriorityQueue 实例。相反,请使用线程安全的 PriorityBlockingQueue.原创 2020-09-03 18:40:00 · 371 阅读 · 0 评论