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

西宁网站建设哪家公司好农业电商网站建设方案

西宁网站建设哪家公司好,农业电商网站建设方案,站长如何做视频类网站,网站托管运营所需资料文章目录一、求1的个数二、另类加法三、数组中出现一次的数字四、数组中出现一次的数字变形一、求1的个数 二进制中1的个数 法一:逐位判断 根据与&运算 n&10,说明n的最右边一位为0 n&11,说明n的最右边一位为1 所以思路就是&…

文章目录

    • 一、求1的个数
    • 二、另类加法
    • 三、数组中出现一次的数字
    • 四、数组中出现一次的数字变形

一、求1的个数

二进制中1的个数
法一:逐位判断

根据与&运算 n&1=0,说明n的最右边一位为0 n&1=1,说明n的最右边一位为1
所以思路就是,将n右移再与1按位与

class Solution {
public:int hammingWeight(uint32_t n) {int count=0;while(n){if((n&1)==1) count++;n=n>>1;}return count;}
};

时间复杂度:O(logn)
逐位判断需循环log2n次,其中log2n代表数字n最高位1的所在位数(例如log2 4 = 2,log2 16 = 4)
右移一位的操作相当于除2
空间复杂度:O(1)

法二:利用n&(n-1)
在这里插入图片描述

class Solution {
public:int hammingWeight(uint32_t n) {int count=0;while(n){n=n&n-1;count++;}return count;}
};

时间复杂度:O(m) m为二进制中1的个数
空间复杂度:O(1)

二、另类加法

不用加减号的加法
与:同时为1,才为1
异或:相同为0,相异为1
在这里插入图片描述

class Solution {
public:int add(int a, int b) {
//因为不允许用+号,所以求出异或部分和进位部分依然不能用+ 号,所以只能循环到没有进位为止        while(b!=0){
//保存进位值,下次循环用int c=(unsigned int)(a&b)<<1;//C++中负数不支持左移位,因为结果是不定的
//保存不进位值,下次循环用,a^=b;
//如果还有进位,再循环,如果没有,则直接输出没有进位部分即可。b=c;   }return a;}
};
/*
把a+b转换成非进位和+进位,由于不能用加法,因此要一直转换直到第二个加数变成0。 
用递归的写法比循环更容易一下子看懂
*/
class Solution {public int add(int a, int b) {if (b == 0) {return a;}// 转换成非进位和 + 进位return add(a ^ b, (a & b) << 1);}
};

三、数组中出现一次的数字

传送门

class Solution {
public:vector<int> singleNumbers(vector<int>& nums) {int res=0;//相同取0,相异取1,因此0^0=0,0^1=1,0异或任何数都为本身,可理解为没影响for (int n: nums) {res ^=n;//假设两个只出现一次的数分别为a和b,获得a异或b的结果}//找到ab第一个不相同的二进制位,用位与&操作(两个都为1才为1,其余为0,因此可理解0和任何数相与都还是本身)//理解:位与,就是0可以掩盖掉所有数字,0遇0为0,遇1还为0(子网掩码)//通过1的位置变化找出首个不一样的二进制位int m=1;while((m&res)==0){//m=000001,当第一位不是1时,结果为0,则m左移一位,000010类推直到找出m<<=1;}//找到m以后,用m划分数组,两个相同的数字,在m位一定相同,即其与m位与的结果一定是相同的,因此按m&n==0划分,就一定能保证://(1)原来相同的元素还在一组//(2)不同的两个元素被分到了不同组int a=0,b=0;for (int n:nums) {if ((n&m)==0) a^=n;else b^=n;}return {a,b};}
};

四、数组中出现一次的数字变形

传送门
法一:哈西最简单的方法

class Solution {
public:int singleNumber(vector<int>& nums) {map<int,int> m;for(auto e: nums){m[e]++;}for(auto e: m){if(e.second==1) return e.first;}return 0;}
};

法二:位运算

 7 : 0B0111 7 : 0B01117 : 0B0111^^^|||出现数  333 // 从上向下,可以发现[3个7]每位都出次了 3 次那这样时再增加一个数。7 : 0B0111 7 : 0B01117 : 0B01114 : 0B0100^^^|||出现数  433 // 从上向下,只有第 3位bit 出现了 4次%%%333 // 接下来,把现各个位出现的次数,按 3取余‖‖‖100 // 取余结果刚好100对应的就是4
class Solution {
public:int singleNumber(vector<int>& nums) {int res = 0;for (int i = 0, sub = 0; i < 32; ++i, sub = 0) {for (auto &n : nums) sub += ((n >> i) & 1);if (sub % 3) res |= (1 << i);}return res;}
};
http://www.yayakq.cn/news/707571/

相关文章:

  • 网站开发和软件开发含义黄冈网站建设费用
  • 使用h5做的学习网站源码seo外链在线提交工具
  • 青龙建站网做问卷美观的网站
  • 网站建设入门教程视频教程wordpress外贸建站主题
  • asp.ne手机触摸网站开发做视频up主视频网站
  • 长春网站建设优势吉网传媒好做英文网站赚钱
  • 营销crm系统网站设计绍兴做网站鼎成
  • 网站设计的内容以及步骤做网站时候编代码
  • 四川省建设工程信息网站深圳市南山区住房和建设局
  • 网站制作企业对比5万左右的新能源汽车推荐
  • 聊城市建设工程质量监督站网站长沙企业关键词优化哪家好
  • 建行网站网址温州小程序开发哪家好
  • 做什么网站流量大深圳辰硕网站优化
  • 网站开发赚钱的方法南京网站建设网
  • 闵行网站建设公司app源码WordPress淘客
  • 简易做网站的软件微信做单网站有哪些
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题建设部网站技术负责人业绩表
  • 网站做联盟还赚钱吗软文发布平台媒体
  • 清远网站seo网络科技公司logo
  • o2o商超网站建设用phpnow搭建网站的整个流程
  • 官方网站建设费用网站没备案可以做商城吗
  • 企业注册信息查询单怎么打印关键词优化排名费用
  • 聊城网站建设设计实力公司wordpress首页模板修改那个文件名
  • 用js做的网站代码吗android软件开发工程师
  • 站长之家seo综合查询门窗专业设计网站
  • 网监网站备案windows优化大师怎么使用
  • 公司做网站效果怎么样免费做网站怎么做网站链接
  • 昌吉网站建设咨询电话网站内链seo
  • 军棋是哪个网站开发的网站建设外地便宜
  • 如何对网站做引擎优化做散客机票的网站如何推广