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

windows搭建网站开发南皮做网站的

windows搭建网站开发,南皮做网站的,龙泉建设有限公司网站,抖音代运营费用一年多少钱创作不易#xff0c;感谢三连支持#xff01;#xff01; 一、常见的位运算总结 标题 二、位1的个数 . - 力扣#xff08;LeetCode#xff09; 利用第七条特性#xff1a;n#xff08;n-1#xff09;干掉最后一个1#xff0c;然后每次都用count去统计#xff… 创作不易感谢三连支持 一、常见的位运算总结 标题 二、位1的个数 . - 力扣LeetCode 利用第七条特性nn-1干掉最后一个1然后每次都用count去统计直到变成0 class Solution { public:int hammingWeight(uint32_t n) {int count0;while(n){n(n-1);count;} return count;} }; 三、汉明距离 . - 力扣LeetCode 利用异或相同为0相异为1的特点x和y异或后不一样的位都会变成1这个时候再用nn-1去统计1个个数即为这两个数字的汉明距离 class Solution { public:int hammingDistance(int x, int y) {//异或的特点相同为0相异为1 然后再利用n(n-1)统计1的个数int nx^y;int count0;while(n){n(n-1);count;}return count;} }; 四、比特数记位典型dp 思路1每遍历一个数都用nn-1去数他一共有多少个1然后放心ans数组中 class Solution { public:int countOnes(int x){int ones0;while(x){x(x-1);ones;}return ones;}//利用vectorint countBits(int n) {vectorint ret(n1);for(int i1;in;i) ret[i]countOnes(i);return ret;} }; 思路2动态规划思想(本质是根据位运算的性质通过已经计算出来的状态去求未计算的状态) 即当计算 i 的「一比特数」时如果存在 0≤jij 的「一比特数」已知且 i和 j 相比i 的二进制表示只比j多了一个 1则可以快速得到 i 的「一比特数」。利用位运算的性质 1、设置最低位 对于nn-1本质上是将最右侧的1干掉所以一定会比原来的n小 因此bit[i]bit[i(i-1)]1  恒成立 class Solution { public:vectorint countBits(int n) {vectorint ret(n1);for(int i1;in;i) ret[i]ret[i(i-1)]1;return ret;} }; 2、最低有效位 对于正整数x来说如果是偶数的话右移一位正好就是x/2并且1的个数不会变所以偶数bit[i]bit[i/2]   对于奇数来说右移一位会丢掉后面的1所以要给他补上去所以奇数等于bit[i]bit[i/2]1       为了修正奇数多出来的1我们可以利用i1,如果是奇数就是1偶数就是0因此   bit[i]bit[i/2](i1) 恒成立 class Solution { public:vectorint countBits(int n) {vectorint ret(n1);for(int i1;in;i) ret[i]ret[i/2](i1);return ret;} }; 3、最高有效位 对于正整数 x如果可以知道最大的正整数 y使得 y≤xy 是 2的整数次幂则 y的二进制表示中只有最高位是 1其余都是 0此时称 y 为 x 的「最高有效位」。令 zx−y显然 0≤zx则 bits[x]bits[z]1所以我们使用heightbit作为当前的最高有效位。如果ii-1为最高有效位就更新heightbiti 比 i−highBit的「一比特数」多 1    所以bit[i]bit[i-height]1 恒成立 class Solution { public:vectorint countBits(int n) {vectorint ret(n1);int heightbit0;for(int i1;in;i) {if((i(i-1))0) heightbiti;ret[i]ret[i-heightbit]1;}return ret;} }; 五、只出现一次的数字1 . - 力扣LeetCode 思路利用异或的性质出现两次的数异或后为0出现一次的数异或0还是本身  class Solution { public:int singleNumber(vectorint nums) {int n0;for(auto e:nums) n^e;return n;} }; 六、只出现一次的数字2  . - 力扣LeetCode class Solution { public:int singleNumber(vectorint nums) {int ret0;for(int i0;i32;i){int sum0;for(int num:nums) if((numi)1) sum;//统计个数每一个1的比特位sum%3;//模3后代表ret当前bit位的值if(sum1) ret|(1i);//sum1就让ret该位置变成1}return ret;} }; 七、只出现一次的数字3 class Solution { public:vectorint singleNumber(vectorint nums) {unsigned int temp0;//遇到INT_MIN会溢出10000……00for(int num:nums) temp^num;int xtemp(-temp);//x拿到最后一个1//int x (temp temp ? temp : temp (-temp));int type10,type20;for(int num:nums) if(numx) type1^num; else type2^num;return {type1,type2};} }; 八、丢失的数字 . - 力扣LeetCode 思路1利用等差数列和的公式-数组每一位数相加即可得到消失的数 class Solution { public:int missingNumber(vectorint nums) {int nnums.size();return n*(n1)/2-accumulate(nums.begin(),nums.end(),0);} }; 思路2利用异或的特点让0和数组所有数进行异或再对1-n异或出现两次的数都会被消去最后只会留下答案 class Solution { public:int missingNumber(vectorint nums) {int ret0;for(int num:nums) ret^num;for(int i0;inums.size();i) ret^i;return ret;} }; 思路3暴力快排寻找下标和数字对应不上的数  class Solution { public:int missingNumber(vectorint nums) {sort(nums.begin(),nums.end());int nnums.size();for(int i0;in;i) if(nums[i]!i) return i;return n;} }; 九、消失的两个数字 . - 力扣LeetCode 该题就是只出现一次数组1和 3的结合所以以上的思路去解答即可 class Solution { public:vectorint missingTwo(vectorint nums) {int temp0;for(auto e:nums) temp^e;for(int i1;inums.size()2;i) temp^i;int xtemp(-temp);//拿到最右边的1int num10,num20;for(auto e:nums) if(ex) num1^e; else num2^e;for(int i1;inums.size()2;i) if(ix) num1^i; else num2^i;return {num1,num2};} }; 十、判定字符是否唯一 . - 力扣LeetCode class Solution { public:bool isUnique(string astr) {if(astr.size()26) return false;//鸽巢原理做优化//利用位图的思想int bitmap0;for(auto ch:astr){int ich-a;//找到映射关系if((bitmapi)11) return false;//先判断该字符是否出现过 判断第i位是否是1//如果没出现过将第i位的0修改为1bitmap|(1i);}return true;} }; 十一、或运算的最小翻转次数 . - 力扣LeetCode class Solution { public:int minFlips(int a, int b, int c) {int ret0;//记录翻转次数for(int i0;i31;i){//找到每一位进行判断int bit_a(ai)1;int bit_b(bi)1;int bit_c(ci)1;//情况1如果c为0的话那么a和b必须全是0 所以他们是多少就要翻转几次if(bit_c0) ret(bit_abit_b);//情况2如果c为1的话那么a和b至少要有一个为1 如果都为0翻转一次如果有1就不用翻转else ret(bit_abit_b0);}return ret;} }; 十二、两整数之和 . - 力扣LeetCode class Solution { public:int getSum(int a, int b) {//要考虑-1因为-1的右移操作是没有定义的while(b){int xa^b;int carry(ab)1;ax;bcarry;}return a;} };
http://www.hkea.cn/news/14444263/

相关文章:

  • 网站建设实验报告手写珠海市建设工程信息网
  • 在线分析网站安康市住房和城乡建设局网站
  • 8免费网站建站能够做网站的资质
  • 重庆便民服务网站APP海外营销网站设计
  • 网站建设推广优化有哪些基本方法社交app网站开发
  • 响水专业做网站设计师个人网站
  • 超市型网站开发wordpress 自动排版
  • 都有哪些js素材网站wordpress 修改网页
  • 定制网站型网站开发黄页网站推广服务
  • 创建网站的流程有哪些湖南 seo
  • 制作网站图片app安装软件下载
  • 网站开发前后端工具组合广阳网站制作
  • 接网站开发哪里好上海网站备案公司
  • html5 手机网站导航条oppo手机商城
  • 洛阳网站建设制作公司主页网站
  • 大埔县住房和城乡规划建设局网站怎么查logo有没有被注册
  • 二手网站排名河北项目网
  • 腾讯云网站免费建设中山 照明 骏域网站建设
  • 制作静态网站制作做房地产用什么网站好
  • 企业网站建设费用的预算电脑配件经营网站的建设
  • 中国空间站和国际空间站对比山东省建设协会网站
  • 盐城网站开发市场公司官网域名怎么注册
  • 制作微信的网站衡水网站建设联系电话
  • 如何创建网站教程视频郑州优化网站
  • jsp源码做网站wap网站如何制作
  • 烟台百度网站排名永州网站制作
  • .net网站项目有哪些购物网站开发语言
  • 我自己做的网站一直没有效果怎么办域名过期了被别人拿去做违法
  • 在电脑上怎么做网站php网站开发是做什么的
  • 12306网站做的好丑北京网站设计公司哪家公司好