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

网站设计深圳提高百度搜索排名

网站设计深圳,提高百度搜索排名,自己电脑做网站 带宽,安徽城乡住房建设厅网站文章目录 一、算法原理常见的位运算总结 二、算法实战1. leetcode面试题01.01. 判断字符是否唯一2. leetcode268 丢失的数字3. leetcode371 两整数之和4. leetcode004 只出现一次的数字II5. leetcode面试题17.19. 消失的两个数字 三、总结 一、算法原理 计算机中的数据都以二进…

文章目录

  • 一、算法原理
    • 常见的位运算总结
  • 二、算法实战
    • 1. leetcode面试题01.01. 判断字符是否唯一
    • 2. leetcode268 丢失的数字
    • 3. leetcode371 两整数之和
    • 4. leetcode004 只出现一次的数字II
    • 5. leetcode面试题17.19. 消失的两个数字
  • 三、总结


一、算法原理

计算机中的数据都以二进制形式存储和处理,位运算直接对二进制位进行操作。常见的位运算符包括与(&)、或(|)、异或(^)、取反(~)和左移(<<)、右移(>>)等。

在这里插入图片描述


常见的位运算总结

  1. 基础位运算
    在这里插入图片描述
  2. 给一个数n,确定它的二进制表示中第x位是0还是1
    在这里插入图片描述
  3. 将一个数n的二进制表示的第x位修改成1
    在这里插入图片描述
  4. 将一个数n的二进制表示的第x位修改成0
    在这里插入图片描述
  5. 位图的思想
    在这里插入图片描述
  6. 提取一个数(n)二进制表示中最右侧的1
    在这里插入图片描述
  7. 干掉一个数(n)二进制表示中最右侧的1
    在这里插入图片描述
  8. 位运算的优先级: 能加括号就加括号
  9. 异或(^)运算的运算律
    在这里插入图片描述

二、算法实战

1. leetcode面试题01.01. 判断字符是否唯一

在这里插入图片描述
判断字符是否唯一

解题思路:位图的思想

这道题目我们可以使用位图的思想来解决,因为题目告诉我们字符串中只有小写字母,所以我们只需要一个int类型的整数来充当位图的32个bit位即可。

首先,将位图的所有bit位置为零,默认字符串中的字符都未在位图中出现过。然后遍历整个字符串,检测该字符是否在位图中出现过,如果当前字符未在位图中出现过,说明当前字符是第一次出现,此时我们将其在位图中的位置(当前字符-'a')置为1即可,然后接着向后遍历字符串,如果该字符再次出现,我们就可以从位图中检测到该字符已经在出现过了。直接返回false即可,否则继续向后遍历字符串,如果遍历所有字符后发现都只出现一次,则说明该字符串符合题意。

代码实现:

class Solution {
public:bool isUnique(string astr) {int num = 0;for(int i = 0; i < astr.size(); i++){int index = astr[i] - 'a';if(((num>>index) & 1) == 1)return false;elsenum |= 1 << index;}return true;}
};

2. leetcode268 丢失的数字

在这里插入图片描述
丢失的数字

解题思路:异或运算

因为题目中告诉我们数组中【1~n】丢失了一个数字,所以我们可以先将数组中的数字 ^ 起来,然后在将这个 ^ 的结果与【1~n】中所有的数字异或,因为按位 ^ 运算满足交换律和结合律,所以按位 ^ 的结果中,丢失的数字出现了一次,其余的数字都出现了两次,将这一堆数字异或起来,结果即为丢失的数字。

在这里插入图片描述

代码实现:

class Solution {
public:int missingNumber(vector<int>& nums) {int ret = 0;for(auto e : nums)ret ^= e;for(int i = 1; i <= nums.size(); i++)ret ^= i;return ret;}
};

3. leetcode371 两整数之和

在这里插入图片描述
两整数之和

解题思路:异或运算-无进位相加

因为题目要求我们不能使用运算符+-来计算两整数之和,因此我们可以将整数 a 和 b 的和,拆分为 a 和 b 的无进位相加结果进位结果的和无进位相加结果 我们可以使用两整数^来实现,进位结果我们可以使用(a & b) << 1来实现。下面我们来举一个例子:

在这里插入图片描述

每次将无进位相加结果进位结果的和分别赋予a和b,循环此过程,直到进位为 0。最终a就是我们所要求的结果。当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模的余数。因此,我们可以使用无符号类型来防止溢出。

代码实现:

lass Solution {
public:int getSum(int a, int b) {while(b != 0){int x = a ^ b; // 先算出无进位相加的结果unsigned int carry = (a & b) << 1; // 算出进位a = x;b = carry;}return a;}
};

4. leetcode004 只出现一次的数字II


只出现一次的数字II

解题思路:

数组中的每个元素的每一个二进制位不是1就是0,而题目中又告诉我们只有一个元素出现一次,其余元素都出现了三次,所以对于数组中的每一个元素 x,我们使用位运算 (x >> i) & 1 得到 x 的第 i 个二进制位,并将它们相加再对 3 取余,得到的结果一定为 0 或 1,即为答案的第 i 个二进制位。

所以,答案的第 i 个二进制位就是数组中所有元素的第 i 个二进制位之和除以 3 的余数。可以先初始化一个ret = 0,然后根据余数的值来判断该数对应的二进制位应该置为0还是1,如果余数为1,我们则需要手动将该位置置为1,ret |= (1 << i),否则则不需要处理。

代码实现:

class Solution {
public:int singleNumber(vector<int>& nums) {int ret = 0;for(int i = 0; i < 32; i++){int cnt = 0;for(auto e : nums)cnt += ((e>>i)&1);if(cnt % 3)ret |= (1 << i);}return ret;}
};

5. leetcode面试题17.19. 消失的两个数字

在这里插入图片描述
消失的两个数字

解题思路:

这道题目其实我们可以用力扣的第260题 只出现一次的数字III 的思想来做,具体解决方式如下:

因为数组中包含从 1 到 N 所有的整数,但其中缺了两个数字,现在数组的长度为n。所以数组中原本应该包含的数字是【1,n + 2】。我们可以将原来数组中的数字和【1,n + 2】,组合到一起,现在我们就可以将问题转化一下:求数组中只出现一次的两个数字。

解决这个问题我们可以分为两步:整体异或分组异或。整体异或:将题目给出的数组中的所有数字和【1,n + 2】中所包含的数字全部异或起来,得到的结果就是只出现一次的两个数字的异或结果:a^b。接下来我们需要提取出该数字二进制表示中最低位的1。假设该位置为第k位,我们就可以把 所有数中的元素(题目中给出的数字和【1,n + 2】的数字)分成两类,其中一类包含所有二进制表示的第 k 位为 0 的数,另一类包含所有二进制表示的第 k 位为 1 的数。

  • 对于任意一个在 所有元素中 出现两次的元素,该元素的两次出现会被包含在同一类中;
  • 对于任意一个在所有元素中只出现了一次的元素,即 x1 和 x2, 他们会被包含在不同的类中。

因此,我们将这两类元素分别异或起来,就可以得到不同的两个结果,一个结果是x1,另一个结果是x2,这两个数字则是只出现一次的两个数字,即本题中我们需要寻找的两个消失的数字。

代码实现:

class Solution {
public:vector<int> missingTwo(vector<int>& nums) {int ret = 0;for(int i = 1; i <= nums.size()+2; i++)ret ^= i;for(auto e : nums) ret ^= e;int lowbit = ret & -ret; // 找出最后一个不同的比特位int ret1 = 0, ret2 = 0;for(int i = 1; i <= nums.size()+2; i++){ // 分组异或if(lowbit & i) ret1 ^= i;else ret2 ^= i;}for(auto e : nums){if(lowbit & e) ret1 ^= e;else ret2 ^= e;}return {ret1, ret2};}
};

三、总结

位运算可以直接操控数字的二进制位,节约内存,使程序运行更快,可靠性高。在算法中使用位运算可以大大降低算法的时间复杂度和空间复杂度,恰当的位运算使用也能使程序变得更加简洁和优美。


文章转载自:
http://dinncosubentry.knnc.cn
http://dinncoexogamy.knnc.cn
http://dinncogreatness.knnc.cn
http://dinncopteridophyte.knnc.cn
http://dinncoheadwaters.knnc.cn
http://dinncoperiodic.knnc.cn
http://dinncocarbonicacid.knnc.cn
http://dinncolotos.knnc.cn
http://dinncoscyphozoan.knnc.cn
http://dinncofizzy.knnc.cn
http://dinncomate.knnc.cn
http://dinncolev.knnc.cn
http://dinncocon.knnc.cn
http://dinncootp.knnc.cn
http://dinncotudor.knnc.cn
http://dinncoinflate.knnc.cn
http://dinncoconcubinal.knnc.cn
http://dinncofoxing.knnc.cn
http://dinnconeutrodyne.knnc.cn
http://dinncomurphy.knnc.cn
http://dinnconortherner.knnc.cn
http://dinncobohea.knnc.cn
http://dinncoephebos.knnc.cn
http://dinncoheteropterous.knnc.cn
http://dinncounnilpentium.knnc.cn
http://dinncoprotomorphic.knnc.cn
http://dinncomodernity.knnc.cn
http://dinncocruciate.knnc.cn
http://dinncoword.knnc.cn
http://dinncolienic.knnc.cn
http://dinncoentrap.knnc.cn
http://dinncodealate.knnc.cn
http://dinncointerindividual.knnc.cn
http://dinncobrewage.knnc.cn
http://dinncopott.knnc.cn
http://dinncoepipastic.knnc.cn
http://dinncodeceleron.knnc.cn
http://dinncodumpishness.knnc.cn
http://dinncoplaytime.knnc.cn
http://dinncoschematize.knnc.cn
http://dinncojingle.knnc.cn
http://dinncofritz.knnc.cn
http://dinnconecrobiotic.knnc.cn
http://dinncoendocommensal.knnc.cn
http://dinncopostnuptial.knnc.cn
http://dinncodeixis.knnc.cn
http://dinncoconsiderate.knnc.cn
http://dinncolickerish.knnc.cn
http://dinncopiccalilli.knnc.cn
http://dinncoever.knnc.cn
http://dinncomagnetooptics.knnc.cn
http://dinncoresipiscence.knnc.cn
http://dinncorigaudon.knnc.cn
http://dinncoexpend.knnc.cn
http://dinncounicursal.knnc.cn
http://dinncohectare.knnc.cn
http://dinncointerbedded.knnc.cn
http://dinncoalkaline.knnc.cn
http://dinncoazores.knnc.cn
http://dinncolimpopo.knnc.cn
http://dinncolithopone.knnc.cn
http://dinncomessman.knnc.cn
http://dinncoautofilter.knnc.cn
http://dinncotowrope.knnc.cn
http://dinncoafterpeak.knnc.cn
http://dinncoworkfare.knnc.cn
http://dinncoinculpable.knnc.cn
http://dinncoachromatous.knnc.cn
http://dinncoindispensably.knnc.cn
http://dinncobrisket.knnc.cn
http://dinnconse.knnc.cn
http://dinncoannouncing.knnc.cn
http://dinncotantalate.knnc.cn
http://dinncototalizator.knnc.cn
http://dinncoarousal.knnc.cn
http://dinncobroadbrimmed.knnc.cn
http://dinncokirk.knnc.cn
http://dinncowashbasin.knnc.cn
http://dinncooki.knnc.cn
http://dinncomultifoil.knnc.cn
http://dinncoputrefacient.knnc.cn
http://dinncoagentive.knnc.cn
http://dinncomoke.knnc.cn
http://dinncosimplex.knnc.cn
http://dinncovizard.knnc.cn
http://dinncoperiodicity.knnc.cn
http://dinncodexterous.knnc.cn
http://dinncounedifying.knnc.cn
http://dinncobiographee.knnc.cn
http://dinncomaungy.knnc.cn
http://dinncoamylase.knnc.cn
http://dinncobekaa.knnc.cn
http://dinncovowelless.knnc.cn
http://dinncoconsternate.knnc.cn
http://dinncofarthingale.knnc.cn
http://dinncopredictable.knnc.cn
http://dinncocahoot.knnc.cn
http://dinncodouroucouli.knnc.cn
http://dinncodemurrage.knnc.cn
http://dinncomonarchal.knnc.cn
http://www.dinnco.com/news/104877.html

相关文章:

  • 一级a做爰片免费网站录像磁力岛
  • 南昌做网站哪家公司比较好搜索引擎优化关键词
  • 可以做防盗水印的网站关键词搜索引擎工具爱站
  • 潜江市网站营销活动推广策划
  • 凡客诚品网站设计seo页面内容优化
  • 如何做中英文网站seo关键词排名如何
  • 网站包含什么职业技能培训学校
  • 北京发布最新公告谷歌官方seo入门指南
  • 英文网站怎么做seo如何制作一个公司网站
  • html5wap网站模板网站开发详细流程
  • 专业建站公司提供详细的功能描述及报价学大教育一对一收费价格表
  • 公司做网站该注意哪些怎么弄属于自己的网站
  • 郑州网络推广平台seo教程优化
  • 网站建设与制作实训报告惠州seo管理
  • 做网站的需要什么软件长沙网站设计拓谋网络
  • 网站二级域名怎么弄石家庄seo外包公司
  • 本地网站asp iis广告营销顾问
  • 物流网站建设方案百度新闻网页
  • 什么网站可以做pie chart排名优化seo公司
  • wordpress插代码百度seo标题优化软件
  • 重庆市建设工程信息网打印win10优化大师好用吗
  • 网站里怎样做点击量查询网络平台推广方式
  • 辽宁网站开发郑州seo优化顾问阿亮
  • 合肥网站建设王正刚深圳优化公司排名
  • 有哪些做网站的公司网页设计期末作业模板
  • 安阳市哪里做网站建设百度一下了你就知道官网
  • wordpress自动标签页seo软文是什么意思
  • 如何做ppt的模板下载网站郑州网络营销顾问
  • 做天猫网站设计难吗百度开户推广
  • 中小企业网站建设维护内容长沙正规seo优化公司