列表

详情


2220. 转换数字的最少位翻转次数

一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作,即将 0 变成 1 ,或者将 1 变成 0 。

给你两个整数 start 和 goal ,请你返回将 start 转变成 goal 的 最少位翻转 次数。

 

示例 1:

输入:start = 10, goal = 7
输出:3
解释:10 和 7 的二进制表示分别为 1010 和 0111 。我们可以通过 3 步将 10 转变成 7 :
- 翻转右边起第一位得到:1010 -> 1011 。
- 翻转右边起第三位:1011 -> 1111 。
- 翻转右边起第四位:1111 -> 0111 。
我们无法在 3 步内将 10 转变成 7 。所以我们返回 3 。

示例 2:

输入:start = 3, goal = 4
输出:3
解释:3 和 4 的二进制表示分别为 011 和 100 。我们可以通过 3 步将 3 转变成 4 :
- 翻转右边起第一位:011 -> 010 。
- 翻转右边起第二位:010 -> 000 。
- 翻转右边起第三位:000 -> 100 。
我们无法在 3 步内将 3 变成 4 。所以我们返回 3 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int minBitFlips(int start, int goal) { } };

rust 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2023-09-13 11:46:03

impl Solution {
    pub fn min_bit_flips(start: i32, goal: i32) -> i32 {
        let mut res = 0;
        let mut tmp = start ^ goal;
        while ( tmp != 0 ) {
            res += tmp & 1;
            tmp >>= 1;
        }
        res as i32
    }
}

cpp 解法, 执行用时: 0 ms, 内存消耗: 5.9 MB, 提交时间: 2023-09-13 11:45:04

class Solution {
public:
    int minBitFlips(int start, int goal) {
        int res = 0;
        int tmp = start ^ goal;
        while ( tmp != 0 ) {
            res += tmp & 1;
            tmp >>= 1;
        }
        return res;
    }
};

java 解法, 执行用时: 0 ms, 内存消耗: 38.1 MB, 提交时间: 2023-09-13 11:44:25

class Solution {
    public int minBitFlips(int start, int goal) {
        int res = 0;
        int tmp = start ^ goal;
        while ( tmp != 0 ) {
            res += tmp & 1;
            tmp >>= 1;
        }
        return res;
    }
}

php 解法, 执行用时: 8 ms, 内存消耗: 18.7 MB, 提交时间: 2023-09-13 11:43:49

class Solution {

    /**
     * @param Integer $start
     * @param Integer $goal
     * @return Integer
     */
    function minBitFlips($start, $goal) {
        $res = 0;
        $tmp = $start ^ $goal;
        while ( $tmp != 0 ) {
            $res += $tmp & 1;
            $tmp >>= 1;
        }
        return $res;
    }
}

golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-09-13 11:42:48

func minBitFlips(start int, goal int) int {
    res := 0
    tmp := start ^ goal
    for tmp != 0 {
        res += tmp & 1
        tmp >>= 1
    }
    return res
}

python3 解法, 执行用时: 28 ms, 内存消耗: 14.8 MB, 提交时间: 2022-05-31 17:49:05

class Solution:
    def minBitFlips(self, start: int, goal: int) -> int:
        res = 0
        tmp = start ^ goal
        while tmp:
            res += tmp & 1
            tmp >>= 1
        return res  

上一题