首页 > 其他分享 >位运算与计数器,数组中其他数字都出现x次,只有一个数字出现一次

位运算与计数器,数组中其他数字都出现x次,只有一个数字出现一次

时间:2022-08-30 20:57:35浏览次数:65  
标签:运算 计数器 数组 其他 出现 变量 数字

一个数组,一个数字出现一次,其他数字出现x次,求只出现一次的数字。做法很多,但对空间与时间度有要求的话,位运算是最方便的做法

如果x是2的话,仅仅异或运算就可以了,但如果更多次的话,则需要每一次位运算,每位置上的1次数达到x,就归0

 

这里需要有两点需要证明,①能得到只出现一次的数字,也符合交换律,②如何构建出来

①符合上述说明的仅仅是一个累加器,统计一的个数,并达到某个数字归零,等价与(a+b+c+d)%x,很明显abcd交换位置不能影响结果,又因为其他数字都出现x次,换句话说其他数字一定会被%x取消

②int a,b,c,d,e,f……若干个变量,X=变量个数=其他变量出现次数=计数器到达归零数字,

于是做出假设,这些变量中的二进制的某一固定位置,1的数量只能零和一,出现一次时候在第一个变量,出现两个时候在第二个变量,以此类推,最后一个直接归零

i是数组元素,a=(a^i)&(其他变量相互或运算,并结果取反),b=(b^i)&(其他变量相互或运算,并结果取反)……以此类推,假设数组元素i的二进制某一位为0不会变化变量表,如果为1的话,这个变量这个位置变零,下一个变量(如果存在)变1

标签:运算,计数器,数组,其他,出现,变量,数字
From: https://www.cnblogs.com/moyutinghua/p/16640758.html

相关文章

  • 数字信号处理--第二章/离散时间信号和离散时间系统
    离散时间信号--数字序列离散时间信号的表示概述对于x(n):n为整数时有对应数值,n非整数时,x(n)没有定义,不可认定为0单位取样序列δ(n):n=0时值为1;单位冲激函数δ(t):n=0时值为∞......
  • 数组的方法(齐全)
    数组原型方法主要有以下这些join():用指定的分隔符将数组每一项拼接为字符串push() :向数组的末尾添加新元素pop():删除数组的最后一项shift():删除数组的第一项unshift()......
  • 百货商场数字化|百联靠全渠道实现疫情期间业务增长
    作为国内百货商场的龙头企业,百联集团很早就敏锐察觉到数字化技术将对百货商场业态产生巨大的影响。早在2014年,百联就开始实施数字化转型的战略,并开始布局全渠道触点,8年间......
  • 数字游戏
    P1043[NOIP2003普及组]数字游戏-洛谷|计算机科学教育新生态(luogu.com.cn)化环为链开两倍空间,求答案时遍历一遍bigsmall[left][right]代表从乐left到right的......
  • 大咖说·图书分享|阿里云数字新基建系列:混合云架构
    混合云架构是什么?发展历程是怎样的?它有哪些应用场景?本期大咖说,看阿里云混合云技术服务高级技术专家、《混合云架构》图书联合作者解国红如何分享。  嘉宾介绍解......
  • 数值数组与字符串数组转换
    数值数组转字符串数组方法一:vararr1=[1,2,5];arr1=arr1.map(String);//将arr1转换为字符串数组console.log(arr1);//结果:["1","2","5"]方法二:vararr1=......
  • 华为云GaussDB深耕数据库根技术,助力能源行业数字化转型
     近日,以“推进能源数字化共建低碳智能社会”为主题的第十二届能源企业信息化大会在北京举办。华为云数据库首席架构师冯柯在会上分享了华为云GaussDB的创新技术和能源......
  • 数字信号处理--第一章/绪论
    数字信号处理的基本运算提出的信号处理问题,都要用适当的理论模型来表示,而理论模型要归结于一组相互联系的运算即为数字信号处理算法。常用基本运算:1、差分方程的计算2、离......
  • MySQL提取字符串中的数字
    1--方法12selectreplace(reverse(FORMAT(reverse('国械注准20173463309'),0)),',','');34--方法25CREATEFUNCTIONget_number(paramvarchar(50))......
  • Linux之awk数组(四)
    1.awk数组AWK可以使用关联数组这种数据结构,索引可以是数字或字符串。AWK关联数组也不需要提前声明其大小,因为它在运行时可以自动的增大或减小。AWK不支持多维数组。2......