[LeetCode刷题] 476. 数字的补数--Java实现
[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开始,将所有0变为1;
- 将第二步得到的数字取反;
- 将第三步与第一步得到的两个数字求异或,即为题目要求的“补数”。
时间复杂度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实现相关推荐
- 【leetcode刷题】36.提莫攻击——Java版
⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 我建议加上攻速,攻击力,生命回复速率,护甲,魔抗,血量,计算在攻击频率下提莫几秒弄死艾希 --leetcode此题热评 前言 哈喽 ...
- 【leetcode刷题】16.环形链表——Java版
⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 使用快慢指针,若指针相遇则判断有环 --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 Questi ...
- [LeetCode刷题] 2611. 老鼠和奶酪--Java实现
## 题目链接 2611. 老鼠和奶酪 - 力扣(LeetCode) ## 题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: ...
- Java实现 LeetCode 476 数字的补数
476. 数字的补数 给定一个正整数,输出它的补数.补数是对该数的二进制表示取反. 示例 1: 输入: 5 输出: 2 解释: 5 的二进制表示为 101(没有前导零位),其补数为 010.所以你需要 ...
- LeetCode刷题(十)----数组-----medium部分(Java、C++)
LeetCode刷题(十)-----数组-------medium部分(Java.C++) 238. 除自身以外数组的乘积 给定长度为n的整数数组nums,其中n>1,返回输出数组output, ...
- Leetcode刷题第1题:两数之和(基于Java语言)
** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...
- Leetcode刷题 463题:岛屿的周长(基于Java语言)
** Leetcode刷题 463题:岛屿的周长(基于Java语言) ** 一. 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相 ...
- Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言)
** Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言) ** 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top( ...
- C#LeetCode刷题之#136-只出现一次的数字(Single Number)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4046 访问. 给定一个非空整数数组,除了某个元素只出现一次以外, ...
- LeetCode刷题实战375:猜数字大小 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
最新文章
- 从概念到应用,终于有人把数据挖掘讲明白了
- 微服务接入oauth2_SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法)...
- 脑洞:如果地府需要一个后台管理系统,你会如何设计?
- keras系列︱keras是如何指定显卡且限制显存用量
- 如何在eclipse中自定义一个jar包名称
- 如何把一个软件嵌入另一个软件_新增一个软件一个游戏
- oracle sql execute elapsed time,SQL ordered by Elapsed Time 脚本
- 计算机系统操作工五级证件,计算机系统操作工国家职业标准.doc
- mfc classwizard怎么打开_《英雄联盟手游》boot enchants任务怎么做 任务翻译完成攻略_英雄联盟手游...
- 苹果手机的隔空投送怎么使用?
- 光源选型的要素有哪些?
- python 浮点数精确运算解决方案
- linux系统运行3dmax,Linux下3D桌面的效果的实现
- 秦九韶算法计算机实现
- 射击类游戏的制作思路
- 【03yy and triangle】
- “电脑下乡”必须坚持创新之路
- 树图区块链学习(未完待续)
- python窗口制作_python制作一个桌面便签软件
- standupTimer项目中的布局容器
热门文章
- Dicom标签之(0020,0037) Image Orientation (Patient)
- java将Word转换成PDF两种方法
- MongoDB特点和使用场景
- 使用SharePoint Framework开发webpart的一些技巧汇总
- 12帧跑步动画分解图_今天给大家分享一个跑步动画教程和注意事项!希望有所帮助!...
- 涨停前常见的K线形态
- 数学竞赛书单该怎么选?金牌牛娃用的书都在这里了!
- 台式机单硬盘安装黑苹果体验
- IDEA 里 VersionController 中的 log 中的不同颜色含义
- 华硕天选笔记本电脑能上网但浏览器打不开