Algorithm
prettykernel
这个作者很懒,什么都没留下…
展开
-
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
<br />题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n) ,空间复杂度是O(1) 。<br />分析:这是一道很新颖的关于位运算的面试题。<br />首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。<br />这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己都等于0 。也就是说,如果转载 2011-05-24 17:56:00 · 2186 阅读 · 0 评论 -
一个全是 32 位整数的大数组,除了其中一个数字出现 2 次外,其余数字都出现 3 次。如何找出那个只出现两次的数字?
#include <stdio.h> int a[] = {433,657,9876,42,9876,657,42,433,433,657,42}; int find_twice(int a[], int length) { int ones = 0; // ones记录了出现1次和3次的位 int twos = 0; // twos记录了出现2次和3次的位 int not_three...原创 2019-07-28 13:23:49 · 4350 阅读 · 0 评论 -
楼层扔鸡蛋问题
有限层数和蛋数,求即使最坏情况下需要的最少判断次数两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。(参见两个鸡蛋--一道Google面试题)这是典型的动态规划问题。假设f[n]表示从n层楼找到摔鸡蛋不碎安全位置的最少判断次数。假设第一个鸡蛋第一次从第i层扔下转载 2012-01-19 22:45:37 · 2727 阅读 · 0 评论