首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

剑指offer-三

2013-11-08 
剑指offer---31.反转单链表,输入链表的头节点,输出该链表,并输出反转后的头节点这个题目不用再说了,写过N

剑指offer---3

1.反转单链表,输入链表的头节点,输出该链表,并输出反转后的头节点

这个题目不用再说了,写过N边了

// lowbit表示的是某个数从右往左扫描第一次出现1的位置int lowbit(int x){return x&~(x-1);}void find(int* a , int n){int i , xors;xors = 0;for(i = 0 ; i < n ; ++i)xors ^= a[i];// 三个数两两的异或后lowbit有两个相同,一个不同,可以分为两组int fips = 0;for(i = 0 ; i < n ; ++i)fips ^= lowbit(xors ^ a[i]);//这一步是个关键// 表示的是:flips=lowbit(a^b)^lowbit(a^c)^lowbit(b^c) int b;    // 假设三个只出现一次的其中一个数为bb = 0;for(i = 0 ; i < n ; ++i){if(lowbit(xors ^ a[i]) == fips)b ^= a[i];}// 成功找到三个数中一个数cout<<b<<endl;}




热点排行