这个题目有三种变形。第一种,一个数组中所有数都出现了两次,只有一个数出现了一次,求这个数。这个题比较简单,只要知道数字间异或的特性,就可以很容易的得出答案。int find_num_appear_once(int *data, int length){ if(data==NULL || len...
分类:
其他好文 时间:
2014-09-16 18:56:40
阅读次数:
282
LeetCode上面有这样两道Single Number 问题:
1、假设一个整型数组中所有的元素都出现了两次,唯独只有一个元素出现了一次,求出这个出现一次的元素。
2、假设一个整型数组中所有的元素都出现了三次,唯独只有一个元素出现了一次,求出这个出现一次的元素。
显然,两个问题唯一的不同就是大部分元素是出现了两次还是三次。
对于问题1:很好解决,通过异或运算,我们可以把所有出现两...
分类:
其他好文 时间:
2014-09-15 11:20:38
阅读次数:
112
一个数组中除开唯一一个元素只出现一次,其余的元素均出现三次。位运算,看不明白,留着以后看吧。 1 #include 2 #include 3 using namespace std; 4 #define maxn 1000 5 int a[maxn],n; 6 7 int main() 8 {...
分类:
其他好文 时间:
2014-09-15 03:17:58
阅读次数:
203
HTML DOM Button 对象Button 对象Button 对象代表 HTML 文档中的一个按钮。该元素没有默认的行为,但是必须有一个 onclick 事件句柄以便使用。在 HTML 文档中 标签每出现一次,一个 Button 对象 就会被创建。您可以通过遍历表单的 elements[] ....
分类:
其他好文 时间:
2014-09-10 17:19:30
阅读次数:
313
题目1:int类型数组中除了一个数出现一次以外,其他数都出现两次,求该数。题目2:int类型数组中除了两个数出现一次以外,其他数都出现两次,求这两个数。题目3:int类型数组中除了三个数出现一次以外,其他数都出现两次,求这三个数。题目4:int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。...
分类:
其他好文 时间:
2014-09-07 13:36:45
阅读次数:
211
情形一:数组中所有数都出现两次,只有一个数出现一次
情形二:数组中所有数都出现两次,只有两个数出现一次
情形一二很多地方都有说明,这里就不啰嗦了,有一点需要注意:当知道原始数据时,可以使用解方程的方法,这样可以把上面的情形无线推广,具体见编程之美
情形三:数组中所有数都出现三次,只有一个数出现一次
方法一:如果数组中的元素都是三个三个出现的,那么从二进制表示的角度,每个位上...
分类:
其他好文 时间:
2014-09-06 09:46:13
阅读次数:
171
http://acm.hdu.edu.cn/showproblem.php?pid=4850
题意:构造长度为n的字符序列,使得>=4的子串只出现一次
其实最长只能构造出来26^4+4-1= 456979 的序列,大于该数的都是不可能的。构造方法,就是那种欧拉回路的序列,此题DFS会爆栈,手动扩展栈也可以AC......
递归形式的开始WA了,没有细调就换非递归了,后来又想了想,虽然自己电脑上运行不了,但是先把长度按小的来,然后调试代码,然后在扩大,AC了,当时错在MOD,递归的MOD应该是26^4,而不是...
分类:
其他好文 时间:
2014-08-31 23:02:42
阅读次数:
332
题目大意:
给出1~n的k个排列(2
做法:
算是不难的DP,dp[i]表示以i为结尾的最长公共子序列的长度,由于每个数在一个排列中只可能出现一次,我们用一个二维数组pos[i][j]表示数字j在第i行出现在第几个位置,再用一个数组cnt[i] 记录i出现了多少次;当第i个数出现了k次之后,说明能够以该数为结尾构成公共子序列,那么dp[i]=max(dp[j]+1),其中i,j满足p...
分类:
其他好文 时间:
2014-08-31 17:22:21
阅读次数:
617
很久很久以前有一个吸血鬼,每m天就会出现一次,把不在自己村子呆着的冒险家吃掉。有n个村子,n-1条道路,每个村子都有一定数量的财富,默认探险家刚一到达一个村子就能获得财富,给出探险家的出生的村子和多少天后吸血鬼出现。
要求在吸血鬼出现之前赶回自己的村子,其实就是求一棵以k为根的各点权值之和最大且各边权加起来
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2014-08-29 16:07:48
阅读次数:
214
题意:给出一个C表达式,计算其值。其中操作数只有26个字母,从a到z依次初始值为1到26;操作符有二位的 + 和二位的 - ,和正常意思一样,然后还有一位的自增 ++ 和一位的自减 - - ,都有前缀和后缀两种,都和正常理解的一样。然后计算表达式值,并给出式子中的各变量最后的值。对了,每个变量在表达式中最多只出现一次。
思路:题目最后也有给出思路,就是将所有一位操作符即自增和自减操作符去掉,再将...
分类:
其他好文 时间:
2014-08-29 14:43:08
阅读次数:
177