栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Leetcode每日一题 693. 交替位二进制数 简单遍历/位运算

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode每日一题 693. 交替位二进制数 简单遍历/位运算

本篇内容:Leetcode每日一题 693. 交替位二进制数 简单模拟/位运算

 文章专栏:leetcode每日一题《打卡日常》

 最近更新:2022 年 3 月 26日 Leetcode每日一题 682. 棒球比赛 xdm打棒球么 栈看了都摇头~

⭐算法仓库:小付的算法之路——Alascanfu-algorithm.git.io

个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)

 点赞  收藏 ⭐留言  一键三连 关爱程序猿,从你我做起

文章目录

写在前面题目

提示思路⭐代码实现⭐运行结果 写在最后

写在前面

最近比较忙,所以更的有点晚~

题目

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

示例1:

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

示例2:

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

示例3:

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

1 <= n <= 2 31 − 1 2^{31} - 1 231−1 思路

本题考查知识点

思路:简单模拟/位运算模拟的话,可以算出二进制的每一位然后逐位比较,这是比较清晰的一种遍历解法。这里不再赘述位运算的思路了,其它uu讲的很清楚了。 ⭐代码实现⭐

遍历

class Solution {
    public boolean hasAlternatingBits(int n) {
        StringBuilder str = new StringBuilder();
        while(n > 0){
            str.append(n%2);
            n/=2;
        }
        String s = str.toString();
        for (int i = 0 ;i < s.length()-1;i++){
            if (s.charAt(i) == s.charAt(i+1))return false;
        }
        return true;
    }
}

时间复杂度: O( l o g 2 n log_2n log2​n)空间复杂度: O( 1 1 1)

位运算

class Solution {
    public boolean hasAlternatingBits(int n) {
        int x = n ^ (n >> 1);
        return (x & (x + 1)) == 0;
    }
}

时间复杂度: O( 1 1 1)空间复杂度: O( 1 1 1) 运行结果

遍历

位运算

写在最后

2022- 3- 28今天小付打卡了哦~

美好的日出 美好的山河

都因有你存在 而璀璨 耀眼

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号