给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。 来源:力扣(LeetCode) 324 ms 5.9 MB 8 ms 6 MB1. 题目
示例 1: 输入: [5,7] 输出: 4 示例 2: 输入: [0,1] 输出: 0
链接:https://leetcode-cn.com/problems/bitwise-and-of-numbers-range
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
2.1 按位查找0
class Solution { public: int rangeBitwiseAnd(int m, int n) { int i, high = 30, ans = m; long num; while(high>=0 && ((m>>high)&1)!=1) high--;//找到最小的数的最高位 for(i = high; i >= 0; --i) { for(num = m; num <= n; ++num) { //2147483646、2147483647,int++溢出 if(((num>>i)&1)==0) { ans &= ~(1<<i); break; } } } return ans; } };
2.2 两数直接都往右移动,直到相等
class Solution { public: int rangeBitwiseAnd(int m, int n) { int move = 0; while(m != n) { m >>= 1; n >>= 1; move++; } return m << move; } };
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算