[leetCode 丶每日随机] 3226. 使两个整数相等的位更改次数
原题: 3226.使两个整数相等的位更改次数
描述:
给你两个正整数 n
和 k
。
你可以选择 n
的 二进制表示 中任意一个值为 1 的位,并将其改为 0。
返回使得 n
等于 k
所需要的更改次数。如果无法实现,返回 -1。
示例 1:
输入: n = 13, k = 4
输出: 2
解释:
最初,n
和k
的二进制表示分别为n = (1101)<sub>2</sub>
和k = (0100)<sub>2</sub>
,
我们可以改变 n
的第一位和第四位。结果整数为 n = (0100)<sub>2</sub> = k
。
示例 2:
输入: n = 21, k = 21
输出: 0
解释:
n
和k
已经相等,因此不需要更改。
示例 3:
输入: n = 14, k = 13
输出: -1
解释:
无法使n
等于k
。
提示
- 1 <= n, k <= 10^6
个人版答案
执行用时: 0 ms 执行内存消耗: 39.78 M
class Solution {
public int minChanges(int n, int k) {
return (n & k) != k ? -1 : Integer.bitCount(n ^ k);
}
}
0 ms 答案及进阶版**
嘻嘻, 我终于 0 ms 一次
个人解题思路与优秀答案解析
题目分析
- ...这没啥分析的... 位运算
个人版思路
哈哈哈哈哈哈, 多年前面试保安的时候, 准备过位运算.
进阶版思路
我的就是进阶版~ 哈哈哈哈
6
月月姐挣钱我是一点也不羡慕啊,太难了
说错了,月月姐挣钱我是一点也不眼红纯羡慕啊,太难了
6
点赞
6
好好好
大佬
大佬
大姥
听又听不懂 学又学不会