当前位置: 首页 > wzjs >正文

做学历的网站seo上海推广公司

做学历的网站,seo上海推广公司,外发加工单表格模板,个人备案网站做网购网站📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;&#xff…

📝前言说明:

  • 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分
  • 每题主要记录:(1)本人解法 + 本人屎山代码;(2)优质解法 + 优质代码;(3)精益求精,更好的解法和独特的思想(如果有的话)
  • 文章中的理解仅为个人理解。如有错误,感谢纠错

🎬个人简介:努力学习ing
📋本专栏:C++刷题专栏
📋其他专栏:C语言入门基础,python入门基础,C++学习笔记,Linux
🎀CSDN主页 愚润泽

题目

  • 位运算操作总结
  • 191. 位 1 的个数
  • 338. 比特位计数
  • 461. 汉明距离
  • 136. 只出现一次的数字
  • 260. 只出现一次的数字 III


位运算操作总结

第x位:从0下标开始的

  1. 基础位运算
    • 右移:>>、左移:<<、取反:~、按位与(逻辑与):&、按位或(逻辑或):|、按位异或^(相同为0,相异为1
  2. 给定一个数 (n),确定它的二进制表示中的第 x 位是0还是1
    • (n >> x) & 1 ,或者:n & 2 x 2^x 2x 2 x 2^x 2x也就是(1 << x))
  3. 将一个数 (n) 的二进制表示的第 x 位修改成 1
    • n |= (1 << x)
  4. 将一个数 (n) 的二进制表示的第x位修改成 0
    • n &= (~(1 << x))
  5. 位图的思想【1 - 4 通常为位图服务】
    • 本质:哈希表
    • 用变量的bit位(0 / 1)记录信息:int有32个bit位
  6. 提取一个数 (n)二进制表示中最右侧的 1
    • n & (- n)
    • 为什么正确?因为:(-n) 的补码求法:在 n 的补码上:从右向左找到第一个 1 ,这个 1 左边的数全部取反(包括符号位)
  7. 干掉一个数 (n) 二进制表示中最右侧的 1(1 变 0)
    • n &= (n - 1)
    • 为什么正确:因为:(n - 1)的值:在 n 的补码上,最右侧的 1 变 0 ,然后 1 右边的 0 变 1
  8. 位运算的优先级
    • 能加括号就加括号
  9. 异或(^)运算的运算律
    • a ^ 0 = a
    • a ^ a = 0
    • a ^ b ^ c = a ^ (b ^ c),即:符合交换律和结合律

下面这些题目主要用于巩固上面的知识:

191. 位 1 的个数

题目链接:https://leetcode.cn/problems/number-of-1-bits/description/
在这里插入图片描述

class Solution {
public:int hammingWeight(int n) {int ans = 0;for(int i = 0; i < 32; i++){if((n >> i) & 1)ans++;}return ans;}
};
  • 如果我们想要依次得到一个int变量的每一位,可以for(int i = 0; i < 32; i++),然后每次让变量>> i

338. 比特位计数

题目链接:https://leetcode.cn/problems/counting-bits/description/
在这里插入图片描述

class Solution {
public:vector<int> countBits(int n) {vector<int> ans(n + 1);for(int i = 0; i <= n; i++){int count = 0, num = i;while(num > 0){num &= (num - 1); // 每次该最低位的 1 count++;}ans[i] = count;}return ans;}
};

461. 汉明距离

题目链接:https://leetcode.cn/problems/hamming-distance/description/
在这里插入图片描述

class Solution {
public:int hammingDistance(int x, int y) {int s = x ^ y, ans = 0;while(s > 0){s &= (s - 1);ans++;}return ans;}
};

136. 只出现一次的数字

题目链接:https://leetcode.cn/problems/single-number/description/
在这里插入图片描述

class Solution {
public:int singleNumber(vector<int>& nums) {int ans = nums[0];for(int i = 1; i < nums.size(); i++)ans ^= nums[i];return ans;}
};

260. 只出现一次的数字 III

题目链接:https://leetcode.cn/problems/single-number-iii/description/

在这里插入图片描述
思路:
设答案为 a 和 b

  • 想办法把两个数 a, b 分开,分成两组
  • 所有数异或的结果 s == a ^ b
  • 那么,s 的二进制位中为 1 的那一位,对于其他数:该位同为 1 / 0,相异以后得到 0
  • 但是对于 a 和 b 肯定是 一 1 一 0 才得到的 1
  • 于是可以根据 1 这一位,把原来的数组分成两组
  • 再分别对组内的数进行全部异或,就可以得到 a 和 b
class Solution {
public:vector<int> singleNumber(vector<int>& nums) {unsigned int s = 0;for(auto x: nums)s ^= x;unsigned int lowbit = s &= (-s); // 获取最低位的 1int a = 0, b = 0;for(auto x: nums){if((x & lowbit))a ^= x;elseb ^= x;}return {a, b};}
};

🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

http://www.dtcms.com/wzjs/211819.html

相关文章:

  • 哪个网站可以学做馒头网络推广培训课程内容
  • 手机网站的开发百度点击软件
  • 泰州网站建设设计国外域名注册
  • 佛山设计网站设计价格百度网讯科技客服人工电话
  • 哪个网站做海外代购百度app官方正式版
  • 给医院做网站赚钱吗网站优化的方式有哪些
  • 专门做礼物的网站亚马逊跨境电商
  • 有限公司和公司哪个好徐州seo外包公司
  • 专注聊城做网站的公司百度山西授权代理
  • c 怎么和网站做交互广东东莞疫情最新消息
  • 做公司网站需要什么资料推广软文是什么意思
  • 长沙建站模板大全搜索引擎优化的概念
  • 网站编辑 图片批量信阳网站seo
  • 想招代理去什么网站四年级小新闻50字左右
  • 什么网站可以做ui小动画今天重大国际新闻
  • 南平做网站小广告怎么能弄干净
  • 广州网站设计流程云优化
  • wordpress在线时长插件谷歌优化工具
  • 站长之家alexa排名怎么看国际局势最新消息今天
  • 休闲农庄展示网站比较靠谱的推广平台
  • 地方网站的建设免费网页设计制作网站
  • 单页面网站 万网x3友情链接的获取途径有哪些
  • 注销网站备案申请表搭建网站需要什么技术
  • 外贸自己建网站网站搜索排名靠前
  • 北京朝阳官方平台百度的关键词优化
  • 淘宝做网站找我要发票百度渠道开户
  • 10天搞定网站开发今天最新军事新闻视频
  • 江苏省住房城乡建设部网站落实20条优化措施
  • 网站图片移动怎么做的公司网站怎么注册
  • 做网站公司好开吗北京网站建设制作开发