做优化送网站,高端网站网站设计,做电子商务网站实验总结,平面设计接单话术leetcode 201 题目题解代码 题目 给你两个整数 left 和 right #xff0c;表示区间 [left, right] #xff0c;返回此区间内所有数字 按位与 的结果#xff08;包含 left、right 端点#xff09;。 具体示例如下#xff1a; 题解
本题是一个在思维上的方法#xff0c;不… leetcode 201 题目题解代码 题目 给你两个整数 left 和 right 表示区间 [left, right] 返回此区间内所有数字 按位与 的结果包含 left、right 端点。 具体示例如下 题解
本题是一个在思维上的方法不涉及数据结构和具体的算法。 首先如果是暴力解法遍历区间内的所有数字是超过时间限制的。
首先有两个规则 1假设区间中有w个数字那么n个数字在第k位只要有一个数字不是1那么按位的结果一定是0 2在区间left到right中因为是连续的整数所以一定在left和right的后面的n位上均存在0根据1可知后面的n位按位的结果都是0. 综上我们只需要找到n到底是几以及left和right的公共前缀就可以了。现在就可以看代码部分了其中shift表示的就是n。
代码
class Solution {
public:int rangeBitwiseAnd(int left, int right) {int shift 0;while(left!right){left left 1;right right 1;shift 1;}return left shift;}
};