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

华汇建设集团有限公司网站专业的seo网站优化公司

华汇建设集团有限公司网站,专业的seo网站优化公司,个体户广告公司名字,自己如何做团购网站欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 基础位运算符: &: 有 0 就是 0 | : 有 1 就是 1 ^ :相同为0,相异为1(无进位相加) 1.给一个数 n, 确定它的二进制表示中的第x位是 0 还是 1 . 使用公式(n >> x) &…

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



基础位运算符:

&: 有 0 就是 0

| : 有 1 就是 1

^ :相同为0,相异为1(无进位相加)

1.给一个数 n, 确定它的二进制表示中的第x位是 0 还是 1 . 使用公式(n >> x) & 1

2.将一个数 n 的二进制表示的 第x位 修改成 1. 将x位置 | 1,其余位置 | 0, 操作: n = n | (1 << x)

3.将一个数n 的二进制表示的第x 位修改成0. 将x位置 & 0,其余位置 & 1,操作: n = n&(~(1 << x) )

4.lowbit提取一个数(n)二进制表示中最右侧的1 . 让-n(让数n 按位取反再加1) & n

其中 -n 操作 本质是:将最左侧的1 的左边区域全部变成相反 

 

5.将一个数(n)二进制表示中的最左侧的1变成0. 使用 n & (n - 1) 

6.异或(^)运算的运算律 

  1. a ^ 0 = a 
  2. a ^ a = 0(消消乐)
  3. a ^ b ^ c = a ^ (b ^ c)

由第一个和第二个规律延申: 奇数个a相异或得到a, 偶数个a异或得到0

对应的题目练习

判定字符是否唯一

题目链接

解法

解法一: 利用哈希表 ,遍历字符串,每次将字符放进hash表中,判断是否重复. 时间复杂度和空间复杂度都是O(n),但其实new一个hash[26]就行

解法二: 位图, 用一个int 32位中的0~25位每一位表示26个字母,0代表没出现过,1代表出现了

优化:鸽巢原理(抽屉原理),如果字符串长度大于26个,那么一定是有重复的字母

代码

class Solution {public boolean isUnique(String astr) {//优化if(astr.length() > 26) return false;int bitMap = 0;for(int i = 1; i < astr.length(); i++){int x = astr.charAt(i) - 'a';//先判断字符是否在位图中if((bitMap >> x) & 1 == 1) return false;//把当前字符加入位图中bitMap |= 1 << x;}return true;   }
}

丢失的数字

题目链接

解法

解法一: 哈希集合,遍历数组,将出现的过的数字标记为1

解法二: 高斯求和, 求0到5的和 ,再减去nums的和,得出结果

 解法三: 异或运算规律, 将nums和0到5的所有数字都 异或 ,得到的结果就是 消失的数字

代码

//利用哈希集合
class Solution {public int missingNumber(int[] nums) {//利用集合Set<Integer> set = new HashSet<>();int n = nums.length;//先把原数组放到set里for(int x : nums) set.add(x);int ret = -1;//把完整数组的每一个元素放到set里判断是否包含,即可查出缺失的数字for(int i = 0; i <= n; i++){if(!set.contains(i)){ret = i;break;}}return ret;}
}//利用高斯求和
class Solution {public int missingNumber(int[] nums) {int n = nums.length;int ret = (n * (n + 1)) / 2;for(int i : nums) ret -= i;return ret;}
}//利用异或
class Solution {public int missingNumber(int[] nums) {int ret = 0;for(int x : nums){ret ^= x;}        for(int i = 0; i <= nums.length; i++){ret ^= i;           }return ret;}
}

两整数之和

题目链接

解法

利用位运算, 将要计算的两个数的和拆分为 两部分: 无进位和 以及 进位和 

  1. 无进位相加 ,"异或"运算:, 即a ^ b,
  2. 进位操作可以使用 "与"运算后再左移一位用符号表示: (a & b) << 1

步骤1得到的数又重新记为 a, 步骤2得到得到的数重新记为b,重复以上操作,最后直到b=0即可得出结果

画图举例

代码

class Solution {public int getSum(int a, int b) {while(b != 0){int tmp = a;a ^= b;//先算出无进位相加b = (b & tmp)<<1;//算出进位相加}return a;}
}

只出现一次的数字||

题目链接

解法

题目要求实现: 线性时间复杂度 即O(n),常数级空间复杂度 即O(n)

 数组中所有数的比特位 相加可以分为4种情况,如下图

将每一个数的 每一位比特位分别对应相加再%3得到的就是 只出现过一次的数a

画图举例

代码

class Solution {public int singleNumber(int[] nums) {int ret = 0;for(int i = 0; i < 32; i++){//依次修改ret中的每一个比特位int sum = 0;//统计nums中所有数的第i为的和for(int x : nums){if(((x >> i) & 1) == 1){sum++;}} sum %= 3;//超时sum对应i位置ret中比特位的数,//如果sum是1,就将ret的i位置修改为1,0则不用管if(sum == 1) ret |= 1 << i;}return ret;}
}

消失的两个数字

题目链接

解法 

nums完整数组1~n所有数字都异或 得到的结果就是a^b(必定不为0),结果就是将a^b分开得到a和b,问题就转变成了: 已知a^b,如何将a和b分开

找到a^b相异的部分dif(即a^b的比特位第一次出现1的位置),将所有的数通过 dif 分类开,再 异或,就可以得到a和b

代码

class Solution {public int[] missingTwo(int[] nums) {int tmp = 0;for(int x: nums) tmp ^= x;for(int i = 1;i <= nums.length + 2;i++) tmp ^= i;//找出a,b两个数比特位不同的第一位,即第一次出现1的位置int dif= 0;while(true){if(((tmp >> dif) & 1) == 1) break;else dif++;}int[] ret = new int[2];for(int x: nums){if(((x >> dif) & 1) == 1) ret[1] ^= x;else ret[0] ^= x; }//将所有的数按照dif位不同,分两类进行异或for(int i =1 ;i <= nums.length + 2;i++){if(((i >> dif) & 1) == 1) ret[1] ^= i;else ret[0] ^= i;}return ret;}
}


文章转载自:

http://xsD29u5g.hxftm.cn
http://ndfqVUAC.hxftm.cn
http://yuyPDB8D.hxftm.cn
http://g6q90SKd.hxftm.cn
http://ferGhmIl.hxftm.cn
http://gB8XXJyf.hxftm.cn
http://QcNKDLS4.hxftm.cn
http://m3o0byvV.hxftm.cn
http://QQlREOiU.hxftm.cn
http://mHbmIUjc.hxftm.cn
http://9wIvqbVX.hxftm.cn
http://rPk7ndj5.hxftm.cn
http://PzS2QskK.hxftm.cn
http://KNLYf1Fg.hxftm.cn
http://ofHZLyA9.hxftm.cn
http://6XDgeQGX.hxftm.cn
http://ZkJrFxCW.hxftm.cn
http://ejlcEHLY.hxftm.cn
http://EhKmmCZI.hxftm.cn
http://cMjDb2jS.hxftm.cn
http://0GCJTqzb.hxftm.cn
http://Ca66YRKM.hxftm.cn
http://eEba7i5v.hxftm.cn
http://44TrqP0j.hxftm.cn
http://ba3tbaad.hxftm.cn
http://Xs6yuTAO.hxftm.cn
http://YxiTSwEe.hxftm.cn
http://XZEtC4VH.hxftm.cn
http://1L3kmIel.hxftm.cn
http://rsu7ZkWe.hxftm.cn
http://www.dtcms.com/wzjs/633221.html

相关文章:

  • 衣服商业网站建设策划书wap建站系统
  • 建站之星成品网站源码网站建设新手教学视频
  • 普通网站备案手机网站的模板下载
  • 自己做网站网页文件在哪里绿色食品销售网站建设
  • 北京建设监督网站wordpress离线发布
  • 泉州网站建设方案优化厦门seo优
  • 怎么找到域名做的那个网站阿里云有主体新增网站
  • 教做网站的学校山西省太原建设工程信息网站
  • 通过邮箱查注册网站中山网站建设是什么
  • 甘肃网站建设方案及案例手机建站程序
  • 手机网站模板 网址网站在线沟通工具
  • 网站备案需要提供哪些资料个人网站可以做电商吗
  • 备案网站名称有什么用境外网站搭建
  • 网站建设岗位工作范围网站建站公司排行
  • 企业网站主题网站改版方案模板
  • 龙岩网站设计一般要多久网络怎么推广自己的产品
  • 广告网站设计哪家快票务网站开发
  • 设计类专业就业前景怎么样郑州网站seo优化
  • 做淘客网站 名字全国建设厅网站
  • 网站空间如何申请手机麻将软件定制开发
  • 网站备案查询接口建设工程合同的内容
  • 网站被攻击空间关了怎么办asp.net网站开发与项目实战
  • 网站建设优化论坛沈阳关键词优化价格
  • 做外包网站wordpress多余页面怎样删除
  • 福州网站建设熊掌号天长做网站公司
  • 汕头行业网站个人如何加入百度推广
  • 优化网站结构资金盘做网站
  • 纳溪区城乡住房建设局网站网站建设运营维护啥意思
  • 网站更名策划方案门户网站建设的公司
  • 福建建设执业注册管理中心网站信阳网站开发公司