类型总结之——位运算
位运算相关
Mona______
好好学习天天向上 o(≧v≦)o
展开
-
位运算总结点睛
一、知识储备移位 运算符< <// 示例一:// 这里定义为 1 << nums.size() 的形式,令 n = nums.size()// 其的十进制是 2^n ,二进制就是 第 n 位是1 ,其余为 0 的一串 二进制数,注意这里是从 0 开始数的。memo = vector<vector<int>>(k+ 1, vector<int>(1 << nums.size(), -1));// 示例二:res |= b原创 2021-06-20 23:42:55 · 198 阅读 · 0 评论 -
leetcode——第338题——比特位计数
题目:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。class Solution {public: vector<int> countBits(int n) { // 动态规划 // 1、确定 dp[i] 数组的含义:数字 i 的二进制位含有 1 的个数 // 2、确定递推公式 // 如果 i&1原创 2021-05-31 23:05:29 · 75 阅读 · 1 评论 -
leetcode——第136题——只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?class Solution {/*时间复杂度O(n) 空间复杂度O(1)关键词:仅有一个出现一次的数字位运算真的又爱又恨,骚里骚气的让人想不到呢~~~利用异或的性质:x ^ x = 0 出现两次x ^ 0 = x 出现一次异或运算满足交换律*/public: int singleNumbe原创 2021-05-31 22:33:42 · 55 阅读 · 0 评论 -
leetcode——第190题——颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。class Solution {/*使用二进制的算术左移和右移*/public: uint32_t reverseBits(uint32_t n) { uint32_t ans = 0; for(int i = 0; i < 32; ++i) { // n & 1 这句话表示 取出 n 的最后一位 ans <<=原创 2021-05-31 22:19:19 · 53 阅读 · 0 评论 -
leetcode——第461题——汉明距离
题目:两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。class Solution {/*1、汉明距离就是求二进制位中有几个不同的位数2、所以先把两个数 做 异或 运算3、然后对异或的结果统计有多少个 1. res & 1 表示取出 res 的最后一位*/public: int hammingDistance(int x, int y) { int res =原创 2021-05-31 22:14:36 · 70 阅读 · 0 评论 -
leetcode——第342题——4的幂
题目:给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4xclass Solution {public: bool isPowerOfFour(int n) { // 法一::自己写的笨笨的解法 // if(n == 1) return true; // if(n < 4) return false;原创 2021-05-31 21:48:40 · 161 阅读 · 0 评论 -
leetcode——第231题——2的幂
题目:给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。class Solution {public: bool isPowerOfTwo(int n) { // 注意三种写法都是对的, // 注意运算符的优先级,这里一定要对 (n&(n-1)) 加圆括号啦~~~ // if(n > 0原创 2021-05-31 21:47:44 · 271 阅读 · 0 评论