力扣面试题 05.03. 翻转数位(前、后缀和)

Problem: 面试题 05.03. 翻转数位

题目描述

在这里插入图片描述

思路及解法

1.将十进制数转换为二进制数(每次按位与1求与,并且右移);
2.依次求取二进制数中每一位的前缀1的数量和,和后缀1的数量和(代码实现时,可以先用一个变量记录,当当前位为1时将该变量加一,否则置为0)
3.依次循环查询每一个二进制数的前后缀1的和再加上1,并从中取出最大值

复杂度

时间复杂度:

O ( 1 ) O(1) O(1)

空间复杂度:

O ( 1 ) O(1) O(1)

Code

class Solution {
   
public:
    /**
     * Prefix and suffix sum
     * 
     * @param num Given array
     * @return int
     */
    int reverseBits(int num) {
   
        if (num == 0) {
   
            return 1;
        }
        vector<int> nums(32);
        for (int i = 0; i < 32; ++i) {
   
            nums[i] = (num & 1);
            num >>= 1;
        }
        vector<int> leftCounts(32);
        int count = 0;
        for (int i = 0; i < 32; ++i) {
   
            leftCounts[i] = count;
            if (nums[i] == 1) {
   
                count++;
            } else {
   
                count = 0;
            }
        }
        count = 0;
        vector<int> rightCount(32);
        for (int i = 31; i >= 0; --i) {
   
            rightCount[i] = count;
            if (nums[i] == 1) {
   
                count++;
            } else {
   
                count = 0;
            }
        }
        int maxOne = leftCounts[0] + rightCount[0] + 1;
        for (int i = 1; i < 32; ++i) {
   
            if ((leftCounts[i] + rightCount[i] + 1) > maxOne) {
   
                maxOne = leftCounts[i] + rightCount[i] + 1;
            }
        }
        return maxOne;
    }
};

相关推荐

  1. 面试150 | 轮转数组

    2024-02-06 07:38:02       45 阅读
  2. 面试经典数组/字符串

    2024-02-06 07:38:02       45 阅读
  3. 经典面试】合并两个有序数组

    2024-02-06 07:38:02       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-06 07:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-06 07:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-06 07:38:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-06 07:38:02       20 阅读

热门阅读

  1. spring-boot-actuator 服务监控

    2024-02-06 07:38:02       28 阅读
  2. 汽车信息安全--SHE中的密钥管理(一)

    2024-02-06 07:38:02       28 阅读
  3. 汽车信息安全--SHE中的密钥管理(二)

    2024-02-06 07:38:02       30 阅读
  4. 2024.02.05

    2024-02-06 07:38:02       30 阅读
  5. word导出链接

    2024-02-06 07:38:02       31 阅读
  6. 【WPF】布局容器/面板总结XAML-Panel控件

    2024-02-06 07:38:02       38 阅读