基本类型算法题目学习(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的阶乘.(这 ...
随机推荐
- 创建 React-Native 工程时,如何指定特定的 React-Native 版本
react-native 可能会出现一种情况,就是版本最高的可能出现有些东西不太稳定,这时候要用到旧的版本怎么办?就可以用以下方法创建项目. 0. 原因 创建新的 React-Native (以下简称 ...
- Android 知识梳理
说明:本篇博客只是一个知识整理,因为网上对于Android的知识介绍足够多,因此我不再写相关文章(主要是因为我写的不如人家好),所以所有文章均来自网络,不贴原文章,只提供连接,因此本文旨在减少你对相关 ...
- vue如何加搜狗联盟广告
搜狗联盟广告和百度联盟广告大同小异,但是好在百度联盟广告的使用方法网上还是可以找到一些,而搜狗联盟广告的教程网上几乎找不到,都是最基本的创建代码位的教程. 在vue中如果要加入搜狗联盟广告,就不能直接 ...
- Java常用数据结构之Set之TreeSet
前言 上篇文章我们分析了HashSet,它是基于HashMap实现的,那TreeSet会是怎么实现的呢?没错!和大家想的一样,它是基于TreeMap实现的.所以,TreeSet的源码也很简单,主要还是 ...
- win8.1的ie11无法打开127.0.0.1和本机IP访问
解决方法:把ie11安全选项里的启动保护模式对勾去掉!
- jQuery form的load函数与el表达式赋值的冲突问题
问题: 在使用el表达式给表单中的项赋初始值的时候,总是失败,物流公司没有自动选中,物流单号也没有显示值. <form id="form" method="post ...
- linux环境中,ssh登录报错,Permission denied, please try again.
问题描述: 今天早上一个同事反应一个问题,通过ssh登录一台测试机的时候,发现两个账号,都是普通账号,一个账号能够登录, 另外一个账号无法登录.问他之前有做过什么变更吗,提到的就是之前有升级过open ...
- docker 相关文章
https://baijiahao.baidu.com/s?id=1581420975184566963&wfr=spider&for=pc 创建centos基础镜像 https ...
- SpringBoot------thymeleaf的使用
1.pom.xml添加相应依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- SQLServer------基本操作
代码: --新增字段 ) --编辑字段名称 --注意: 更改对象名的任一部分都可能会破坏脚本和存储过程 EXEC sp_rename 'FTTxUser.[Modifiersss]','Creator ...