
常用算法
timer_gao
faster smarter
展开
-
n&(n-1)的妙用
:求一个int的n,写成二进制的形式有多少个1? 1.用循环每次把n向右移动一位,判断n&1是否为1,这种方式会超时 2.采用n&(n-1)转载 2017-03-02 15:52:20 · 282 阅读 · 0 评论 -
找数组中出现次数超过一半的数字
找数组中出现次数超过一半的数字 数组中有一个数字出现次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 由于数字2在数组中出现了5次,超过数组长度一半,因此输出2 问题分析 首先想到的是,可以维护一个数据结构用来存储每个数字对应的出现次数。没遇到一个新的数字就去找这个数字是否出现过,如果出现过就加1.这种思路最简单,但转载 2017-03-18 15:05:58 · 403 阅读 · 0 评论 -
求两个不等长、有序数组的中位数非常简洁的O(log(min(M,N)))迭代解详细解释
非常简洁的O(log(min(M,N)))迭代解详细解释 这个问题是众所周知的难以实现由于所有的角落情况。大多数实现将奇数和偶数数组视为两种不同的情况,并分别对待它们。事实上,有一点想法扭曲。这两种情况可以组合为一个,导致一个非常简单的解决方案,几乎不需要特殊的处理。 首先,让我们以一种非常规的方式看待“中国”的概念。那是: “ 如果我们将排序数组切割为两半的EQUAL LENG翻译 2017-03-18 16:14:10 · 1450 阅读 · 0 评论