基本类型算法题目学习(EPI)
1.关于奇偶校验的方法中,如何快速的求取一个64-bit的数字的奇偶校验位。(如果1的位数为奇数,则奇偶校验位为1,如果1的位数为偶数,则奇偶校验位为0)
a.暴力枚举法采用一位一位进行计算,一位一位的移位,效率较低。
int getParity(long long _64bitsnum) {
int _1count = 0;
for(int i = 0;i < 64;i++) {
if( (_64bitsnum>>i)&1UL ) {
_1count++;
}
}
return _1count % 1;
}
b.x = x & (x-1),每次将最低位的1进行失效,统计1的个数。
int getParity(long long _64bitsnum) {
int _1count = 0;
while(_64bitsnum) {
_1count++;
_64bitsnum = _64bitsnum & (_64bitsnum - 1);
}
return _1count % 1;
}
c.可以采用查表法,例如8位为一个单元,255的空间每个对应1的个数,按照单元统计1的个数。
2.调换64-bit数字的第i位和第j位
a. i位如果与j位相同,没必要进行替换,如果不同,替换的方法为( 1<<i | 1<<j ) ^ 原数字即可。
bool swapbits(long long &_64bitnum,int i,int j) {
//利用异或的性质
if( (_64bitnum >> i) & 1LL != (_64bitnum >> j) & 1LL ) {
_64bitnum ^= ( (1LL << i) | (1LL << j) );
}
return true;
}
3.将一个64-bit数字的所有位进行逆序
a.不断的调用上面调换的方法。
bool bitreverse(long long &_64bitnum) {
for(int i = 0;i < 32;i++) {
swapbits(_64bitnum,i,63-i);
}
return true;
}
b.采用查表法,以单元为单位。
4.不适用乘,除,模运算求取两个数的最大公约数(GCD)
a.可以利用减法模拟辗转相除法。
b.递归不断的缩小问题规模。
5.返回1至n之前的素数
a.建立1-n的表,然后利用某个数的倍数将表中不为素数的不断至为false,如果一个一个数字的判断是否是素数效率太低。
6.使用位操作完成两个无符号数字的乘法运算
a.二进制以为,利用位操作模拟加法操作。
7.利用加,减,乘,位操作完成除法的运算
a.总体思想采用减法,但是可以减去2^k,这样可以加快减法的速度。
基本类型算法题目学习(EPI)的更多相关文章
- 数组和字符串的基础题目学习(EPI)
学习的速度有些慢,脑袋转动的频率有些不是很高.不过今天的效率我觉得还是可以,应该不能称效率吧,就是整个感觉不错,感觉自己补充了很多的知识.其实G家和F家败了之后不知道看看算法题对接下来的找工作帮助是否 ...
- 推荐一个算法编程学习中文社区-51NOD【算法分级,支持多语言,可在线编译】
最近偶尔发现一个算法编程学习的论坛,刚开始有点好奇,也只是注册了一下.最近有时间好好研究了一下,的确非常赞,所以推荐给大家.功能和介绍看下面介绍吧.首页的标题很给劲,很纯粹的Coding社区....虽 ...
- leetcode 刷500道题,笔试/面试稳过吗?谈一谈这些年来算法的学习
想要学习算法.应付笔试或者应付面试手撕算法题,相信大部分人都会去刷 Leetcode,有读者问?如果我在 leetcode 坚持刷它个 500 道题,以后笔试/面试稳吗? 这里我说下我的个人看法,我认 ...
- Top Coder算法题目浏览器
作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/top-code-offline-browser/ 关于 左耳朵耗子 ...
- 【树论 1】 prim算法的学习和使用
进阶版神犇可以看看本题解的姊妹篇 Kruskal算法的学习和使用 下面的内容是prim算法 但是最小生成树是什么呢? 标准定义如下:在边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值 ...
- PTA数据结构与算法题目集(中文) 7-34
PTA数据结构与算法题目集(中文) 7-34 7-34 任务调度的合理性 (25 分) 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行.“ ...
- PTA数据结构与算法题目集(中文) 7-11
PTA数据结构与算法题目集(中文) 7-11 7-11 关键活动 (30 分) 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行.“任务调度 ...
- 一道算法题目, 二行代码, Binary Tree
June 8, 2015 我最喜欢的一道算法题目, 二行代码. 编程序需要很强的逻辑思维, 多问几个为什么, 可不可以简化.想一想, 二行代码, 五分钟就可以搞定; 2015年网上大家热议的 Home ...
- iOS面试中常见的算法题目
一.前言 这里是在iOS求职中自己遇到的算法题,希望对大家有所帮助.不定期更新.如果大家想在线运行代码调试,可以将代码拷贝到这里.然后进行调试.下面就是常见的算法题目. 二.正文 1.就n的阶乘.(这 ...
随机推荐
- Hibernate的七种映射关系之七种关联映射(二)
继续上篇博客 七.Hibernate双向一对多关联映射:让多的一端来维护关系. 主要是解决一对多单向关联的缺陷,而不是需求驱动的. 1.在Student.java实体类里添加Classes引用.pri ...
- linux 测试网络延迟
1.在A服务器上运行qperf &作为服务器节点,由其他服务器来连接测试,默认监听tcp的19765端口.
- LINE@生活圈招募好友秘笈
什么是「获得更多好友」页面? 您可从 LINE@ app >管理>获得更多好友 进入此页面. ▼ 「获得更多好友」新介面中,募集好友的四大秘诀 秘诀一.「以社群网站或电子邮件分享」 • ...
- Chrome扩展应用
现在越来越多的用户将chrome浏览器设置为自己默认的浏览器,不仅是因为他的界面美,最重要的是他对html5和CSS3完美的支持,且调试工具非常好用,还有丰富的扩展库.如何安装自己的扩展呢? 点击自定 ...
- Android测试跑单个包脚本文件
脚本: adb shell monkey -p 应用包名 --throttle 随机事件间隔 -v -v -v -s 1 --ignore-security-exceptions --kill-pro ...
- php扩展AMQP,安装报错解决
接下来来安装php扩展AMQP,安装了它以后,才能用PHP操作rabbitmq.wget https://pecl.php.net/get/amqp-1.4.0.tgztar -zxvf amqp-1 ...
- linux修改文件所属用户和用户组
使用chown命令可以修改文件或目录所属的用户: 命令:chown 用户 目录或文件名 例如:chown testAdmin /home/work (把home目录下的xua ...
- windows恶意软件删除工具(MRT.exe)检查计算机是否感染病毒使用图解
Microsoft Windows恶意软件删除工具可以检查运行 Windows XP.Windows 2000 和 Windows Server 2003 的计算机是否受到特殊.流行的恶意软件(包括 ...
- Selenium 延时等待
在 Selenium 中, get() 方法会在网页框架加载结束后结束执行,此时如果获取 page_source ,可能并不是浏览器完全加载完成的页面: 如果某些页面有额外的 Ajax 请求,我们在网 ...
- 第二篇:Hadoop 在Ubuntu Kylin系统上的搭建[图解]
前言 本文介绍如何在Ubuntu Kylin操作系统上搭建Hadoop平台. 配置 1. 操作系统: Ubuntu Kylin 14.04 2. 编程语言: JDK 1.8 3. 通信协议: SSH ...