首页 > 其他分享 >LeetCode 693.交替位二进制数(简单)

LeetCode 693.交替位二进制数(简单)

时间:2022-11-25 13:32:58浏览次数:51  
标签:693 运算 结果 二进制 示例 交替 异或 LeetCode

题目描述:

给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。

示例 1:

输入:n = 5
输出:true
解释:5 的二进制表示是:101

示例 2:

输入:n = 7
输出:false
解释:7 的二进制表示是:111.

示例 3:

输入:n = 11
输出:false
解释:11 的二进制表示是:1011.

示例 4:

输入:n = 10
输出:true
解释:10 的二进制表示是:1010.

示例 5:

输入:n = 3
输出:false

提示:

  • 1 <= n <=

题目分析:

这道题可以运用错位异或运算检查其二进制是否 ​​0​​​ 和 ​​1​​​ 交替出现。只需要将 ​​n​​​ 与 ​​n >> 1​​​ 进行异或运算,如果符合题目要求的交替位二进制,则结果全是 ​​1​​​ ,将其结果加 ​​1​​​ 后就会产生一个数,且这个数的二进制形式只含有一个 ​​1​​​ 。我们只需要把最后这个结果与其减一后的结果进行按位与运算,如果结果为 ​​0​​​ ,则说明 ​​n​​​ 的二进制值 ​​0​​​ 和 ​​1​​ 是交替出现的。下面给出了两个例子。

例子 1 :n = 101010

步骤

运算过程

二进制数 n

101010

n ^ (n >> 1)

n:101010

n >> 1:10101

结果为:111111

x = (n ^ (n >> 1)) + 1

1000000

x & (x - 1)

x:1000000

x - 1:111111

结果为:0

例子 2 :n = 101011

步骤

运算过程

二进制数 n

101011

n ^ (n >> 1)

n:101011

n >> 1:10101

结果为:111110

x = (n ^ (n >> 1)) + 1

111111

x & (x - 1)

x:111111

x - 1:111110

结果为:111110

题解:

执行用时: 0 ms

内存消耗: 35 MB

class Solution {
public boolean hasAlternatingBits(int n) {
// 计算 n 右移一位后 按位异或 n 再加上 1 的值
int x = (n ^ (n >> 1)) + 1;
// 如果 计算得到的值 与 其减去 1 后的值 按位与 为 0
// 则说明 n 的二进制值 0 和 1 交替出现
return (x & (x - 1)) == 0;
}
}

题目来源:力扣(LeetCode)




标签:693,运算,结果,二进制,示例,交替,异或,LeetCode
From: https://blog.51cto.com/u_15891283/5886575

相关文章

  • LeetCode 268.丢失的数字(简单)
    题目描述:给定一个包含​​[0,n]​​​中​​n​​​个数的数组​​nums​​​,找出​​[0,n]​​这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间......
  • LeetCode 338.比特位计数(简单)
    题目描述:给你一个整数​​n​​​,对于​​0<=i<=n​​​中的每个​​i​​​,计算其二进制表示中​​1​​​的个数,返回一个长度为​​n+1​​​的数组​......
  • LeetCode 540.有序数组中的单一元素
    LeetCode540.有序数组中的单一元素题目链接:​​https://leetcode-cn.com/problems/single-element-in-a-sorted-array/​​题目描述:给定一个只包含整数的有序数组,每个元......
  • LeetCode 154.寻找旋转排序数组中的最小值II
    LeetCode154.寻找旋转排序数组中的最小值II题目链接:​​https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/​​题目描述:已知一个长度为 n ......
  • LeetCode 81.搜索旋转排序数组II
    LeetCode81.搜索旋转排序数组II题目链接:​​https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/​​题目描述:已知存在一个按非降序排列的整数数组 n......
  • LeetCode 34.在排序数组中查找元素的第一个和最后一个位置
    LeetCode34.在排序数组中查找元素的第一个和最后一个位置题目链接:​​https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/​​......
  • LeetCode 76.最小覆盖子串
    LeetCode76.最小覆盖子串题目链接:​​https://leetcode-cn.com/problems/minimum-window-substring/​​题目描述:给你一个字符串 s 、一个字符串 t 。返回 s 中涵......
  • 如何用jQuery / Javascript播放二进制MP3流?
    我从ajax调用​中获得了纯二进制MP3流.没有标题,没有.只是直接MP3位.(实际上甚至连一条流都没有?)我希望能够在网页上播放它(如果可能的话,还可以提供下载).这可能吗?如果是......
  • 如何用jQuery / Javascript播放二进制MP3流?
    我从ajax调用中获得了纯二进制MP3流.没有标题,没有.只是直接MP3位.(实际上甚至连一条流都没有?)我希望能够在网页上播放它(如果可能的话,还可以提供下载).这可能吗?如果是这......
  • leetcode 104. 二叉树的最大深度 js实现
    给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null......