[LeetCode刷题] 476. 数字的补数–Java实现

题目链接

https://leetcode-cn.com/problems/number-complement/

题目描述

对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。

例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。
给你一个整数 num ,输出它的补数。

示例 1:

输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。

示例 2:

输入:num = 1
输出:0
解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。

提示:

1 <= num < 231

解题思路

1.位运算

通过位运算实现题解,主要分为四步:

  1. 将输入数字取反并暂存;
  2. 将输入数字的二进制,从左至右,从第一个1开始,将所有0变为1;
  3. 将第二步得到的数字取反;
  4. 将第三步与第一步得到的两个数字求异或,即为题目要求的“补数”。

时间复杂度O(1);

[note]: 位运算笔记

Java代码实现:

class Solution {public int findComplement(int num) {//以5为例:00000101//取反 11111010int tem = ~num;//经过下面四行:00000101变为00000111num |= num >> 1;num |= num >> 2;num |= num >> 4;num |= num >> 8;//整型一般是 32 位,上面假设 8 位。//取反:变为11111000num = ~num;//异或 11111010和11111000变为00000010tem = tem ^num;return tem;}
}

[LeetCode刷题] 476. 数字的补数--Java实现相关推荐

  1. 【leetcode刷题】36.提莫攻击——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 我建议加上攻速,攻击力,生命回复速率,护甲,魔抗,血量,计算在攻击频率下提莫几秒弄死艾希 --leetcode此题热评 前言 哈喽 ...

  2. 【leetcode刷题】16.环形链表——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 使用快慢指针,若指针相遇则判断有环 --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 Questi ...

  3. [LeetCode刷题] 2611. 老鼠和奶酪--Java实现

    ##  题目链接 2611. 老鼠和奶酪 - 力扣(LeetCode) ##  题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: ...

  4. Java实现 LeetCode 476 数字的补数

    476. 数字的补数 给定一个正整数,输出它的补数.补数是对该数的二进制表示取反. 示例 1: 输入: 5 输出: 2 解释: 5 的二进制表示为 101(没有前导零位),其补数为 010.所以你需要 ...

  5. LeetCode刷题(十)----数组-----medium部分(Java、C++)

    LeetCode刷题(十)-----数组-------medium部分(Java.C++) 238. 除自身以外数组的乘积 给定长度为n的整数数组nums,其中n>1,返回输出数组output, ...

  6. Leetcode刷题第1题:两数之和(基于Java语言)

    ** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...

  7. Leetcode刷题 463题:岛屿的周长(基于Java语言)

    ** Leetcode刷题 463题:岛屿的周长(基于Java语言) ** 一. 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相 ...

  8. Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言)

    ** Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言) ** 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top( ...

  9. C#LeetCode刷题之#136-只出现一次的数字(Single Number)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4046 访问. 给定一个非空整数数组,除了某个元素只出现一次以外, ...

  10. ​LeetCode刷题实战375:猜数字大小 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. 从概念到应用,终于有人把数据挖掘讲明白了
  2. 微服务接入oauth2_SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法)...
  3. 脑洞:如果地府需要一个后台管理系统,你会如何设计?
  4. keras系列︱keras是如何指定显卡且限制显存用量
  5. 如何在eclipse中自定义一个jar包名称
  6. 如何把一个软件嵌入另一个软件_新增一个软件一个游戏
  7. oracle sql execute elapsed time,SQL ordered by Elapsed Time 脚本
  8. 计算机系统操作工五级证件,计算机系统操作工国家职业标准.doc
  9. mfc classwizard怎么打开_《英雄联盟手游》boot enchants任务怎么做 任务翻译完成攻略_英雄联盟手游...
  10. 苹果手机的隔空投送怎么使用?
  11. 光源选型的要素有哪些?
  12. python 浮点数精确运算解决方案
  13. linux系统运行3dmax,Linux下3D桌面的效果的实现
  14. 秦九韶算法计算机实现
  15. 射击类游戏的制作思路
  16. 【03yy and triangle】
  17. “电脑下乡”必须坚持创新之路
  18. 树图区块链学习(未完待续)
  19. python窗口制作_python制作一个桌面便签软件
  20. standupTimer项目中的布局容器

热门文章

  1. Dicom标签之(0020,0037) Image Orientation (Patient)
  2. java将Word转换成PDF两种方法
  3. MongoDB特点和使用场景
  4. 使用SharePoint Framework开发webpart的一些技巧汇总
  5. 12帧跑步动画分解图_今天给大家分享一个跑步动画教程和注意事项!希望有所帮助!...
  6. 涨停前常见的K线形态
  7. 数学竞赛书单该怎么选?金牌牛娃用的书都在这里了!
  8. 台式机单硬盘安装黑苹果体验
  9. IDEA 里 VersionController 中的 log 中的不同颜色含义
  10. 华硕天选笔记本电脑能上网但浏览器打不开