LintCode:更新二进制位
来源:互联网 发布:不用网络最好玩的游戏 编辑:程序博客网 时间:2024/06/05 20:52
给出两个32位的整数N和M,以及两个二进制位的位置i和j。写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串)
您在真实的面试中是否遇到过这个题?Yes
样例
给出N = (10000000000)2,M = (10101)2, i = 2, j = 6
返回 N = (10001010100)2
挑战
标签 Expand 最少的操作次数是多少?
相关题目 Expand
解题思路:
首先将N的第i到j位清0,然后将M左移i位,最后2者或运算。
class Solution { /** *@param n, m: Two integer *@param i, j: Two bit positions *return: An integer */ public int updateBits(int n, int m, int i, int j) { // write your code here int mark = 0; if (j < 31) { int max = ~0; // 从第j位开始,全部至为0 int left = max - ((1 << (j + 1)) - 1); // 从第0位到第i位至为0 int right = ((1 << i) - 1); // 组成一个mark,该数的第i-j为0 mark = left | right; } else { mark = (1 << i) - 1; } return (n & mark) | (m << i); }}
0 0
- LintCode-更新二进制位
- LintCode - 更新二进制位
- lintcode-更新二进制位-179
- LintCode 更新二进制位
- LintCode:更新二进制位
- LintCode 更新二进制位
- lintcode 更新二进制位
- 中等 更新二进制位 (lintcode)
- LintCode 179-更新二进制位
- LintCode : 更新二进制位
- 更新二进制位-LintCode
- 更新二进制位——LintCode
- 更新二进制位
- 更新二进制位
- 更新二进制位
- 更新二进制位
- 左旋转二进制位-LintCode
- 二进制位
- IBM Cloudant分布式NoSQL数据库介绍
- 关于addSpriteFramesWithFile读取失败
- maven 安装纪录
- mysql下如何执行sql脚本
- JavaFX入门(三):使用Eclipse开发JavaFX程序
- LintCode:更新二进制位
- 触发器
- 入门网络安全第一天
- 杭电ACM的初学者入门 2010
- 爬爬爬之路:UI(十一) UITableView(三) 自定义Cell 多Cell混合 自适应高度 及cell的状态控制
- 练习UDP发送接收
- Android性能优化之常见的内存泄漏
- IOS 实现不定参数方法
- LintCode:最多有k个不同字符的最长子字符串