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

dw使用模板做网站教程网站推广120种方法

dw使用模板做网站教程,网站推广120种方法,怎样开一个自己的公众号,怀安网站建设个人主页(找往期文章包括但不限于本期文章中不懂的知识点): 我要学编程(ಥ_ಥ)-CSDN博客 题目: 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。…

个人主页(找往期文章包括但不限于本期文章中不懂的知识点): 我要学编程(ಥ_ಥ)-CSDN博客

题目: 

在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。

例如:

数组中有:1 2 3 4 5 1 2 3 4,只有5出现一次,其他数字都出现2次,找出5

 这个题目说难也难,说容易也容易,主要是看能不能想到。这个题目是让我们在相同中找不同(只有5是出现一次,其他数字都出现2次,找出5),就可以想到一个操作符按位异或(^),同为0,异为1。不过这里有一个知识点:0 ^ n = n    n ^ n = 0。这个题目在下面这篇文章中讲过,可以去看看。                     

 利用操作符解题的精彩瞬间-CSDN博客

题目: 

一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。

编写一个函数找出这两个只出现一次的数字。

例如:

有数组的元素是:1,2,3,4,5,1,2,3,4,6

只有5和6只出现1次,要找出5和6.

如果我们还用异或的方法,就会发现这个结果不是我们想要的。但是这个思想还是用异或的方法。因为这个题目还是找不同,只不过是多了一个数,并且要全部输出。但是如果我们把这个数组分为两个数组,每个数组中都只有一个数出现一次,然后再用上面的方法:异或 ,得出结果,分别输出。我们现在就是要找到这个分组的依据,如果根据这个例子,我们就会发现可以用奇偶的方法把这两个不同的数个分开。

#include <stdio.h>
void FindNum(int* p, int sz)
{int num1 = 0;int num2 = 0;int i = 0;for (i = 0; i < sz; i++){if (*(p+i) % 2 == 1){num1 ^= *(p + i);}else{num2 ^= *(p + i);}}printf("%d %d\n", num1, num2);
}int main()
{int arr[] = { 1,2,3,4,5,6,4,3,2,1 };int sz = sizeof(arr) / sizeof(arr[0]);FindNum(arr, sz);return 0;
}

当然这个方法有局限性,只限于这两个出现一次的数,一个是奇数一个是偶数。如果两个都是奇数或者偶数不行。

这里还是用异或,将这个数组中的数全部异或到一起,把最终的结果转化为二进制。看看二进制中的1,随机选一个1,作为异或的结果。画图演示:

我们把倒数第二位的1作为分界限。把这个位是1的分成一组,是0的分成1组。当然这里可能会有小伙伴有疑惑:这个1,只是把5和6分开了,但是那些其它的数字呢?其实这里我们的目的从一开始就是要把5和6分开就行了。因为那些数都是一对的,不管是前面的奇偶性,还是二进制位都是一样的,我们分开了一个,另外一个也会跟着走。 

#include <stdio.h>
void FindNum(int* p, int sz)
{//第一步把全部的数异或到一起,得出最终的结果int ret = 0;int i = 0;for (i = 0; i < sz; i++){ret ^= *(p + i);}//将ret的一个二进制位1,作为分界线,1是一组,0是一组int num1 = 0;int num2 = 0;for (i = 0; i < sz; i++){//ret >> 1就是把倒数第二位的二进制位移到倒数第一位(只有这样才能判断是否为1)//(*(p + i))) >> 1 就是和上面一样的效果。if( ((ret >> 1) & ((*(p + i))) >> 1 )== 1){num1 ^= *(p + i);}else{num2 ^= *(p + i);}}printf("%d\n", num1);printf("%d\n", num2);
}int main()
{int arr[] = { 1,2,3,4,5,6,4,3,2,1 };int sz = sizeof(arr) / sizeof(arr[0]);FindNum(arr, sz);return 0;
}

但是这个代码也是有缺陷的,只能把倒数第二位的找出(就像5和6)。如果要推广的话,就不可以,除非我们把那个异或的数的第K位为1找出来,移到想要的位数来比较。得到K的值

#include <stdio.h>
void FindNum(int* p, int sz)
{//第一步把全部的数异或到一起,得出最终的结果int ret = 0;int i = 0;for (i = 0; i < sz; i++){ret ^= *(p + i);}//将ret的一个二进制位1,作为分界线,1是一组,0是一组//接下来就是找这个1。int k = 0;for (i = 0; i < 32; i++)//最坏的结果就是找32次{if (((ret >> i) & 1) == 1)//最低位为1,则说明是1{k = i;break;}}int num1 = 0;int num2 = 0;for (i = 0; i < sz; i++){//i >> k就是把i的二进制位移了k位,看看与1的结果,如果是1,则说明该位是1if( (((*(p + i)) >> k) & 1) == 1){num1 ^= *(p + i);}else{num2 ^= *(p + i);}}printf("%d\n", num1);printf("%d\n", num2);
}int main()
{int arr[] = { 1,2,3,4,5,6,4,3,2,1 };int sz = sizeof(arr) / sizeof(arr[0]);FindNum(arr, sz);return 0;
}

这里就是可以任意找了。注意一下:在判断数组元素与1的结果是否为1时,要把括号加上去,阐明优先运算。 


文章转载自:
http://christianise.tgcw.cn
http://lateritization.tgcw.cn
http://safest.tgcw.cn
http://disenchant.tgcw.cn
http://augur.tgcw.cn
http://turnverein.tgcw.cn
http://billionth.tgcw.cn
http://familiarity.tgcw.cn
http://pennycress.tgcw.cn
http://frisure.tgcw.cn
http://stroboradiograph.tgcw.cn
http://ventromedial.tgcw.cn
http://blood.tgcw.cn
http://phlebotomist.tgcw.cn
http://milon.tgcw.cn
http://incompact.tgcw.cn
http://microprogrammable.tgcw.cn
http://cattle.tgcw.cn
http://shalloon.tgcw.cn
http://itineracy.tgcw.cn
http://artifactitious.tgcw.cn
http://unimpressive.tgcw.cn
http://bakeshop.tgcw.cn
http://osteitis.tgcw.cn
http://heaver.tgcw.cn
http://transfixion.tgcw.cn
http://sancerre.tgcw.cn
http://osteocranium.tgcw.cn
http://bedrabble.tgcw.cn
http://hypocrinism.tgcw.cn
http://supraoptic.tgcw.cn
http://ietf.tgcw.cn
http://gadid.tgcw.cn
http://pylorospasm.tgcw.cn
http://technography.tgcw.cn
http://myelofibrosis.tgcw.cn
http://woolding.tgcw.cn
http://booboisie.tgcw.cn
http://dittany.tgcw.cn
http://maid.tgcw.cn
http://roundish.tgcw.cn
http://laser.tgcw.cn
http://maze.tgcw.cn
http://cuspate.tgcw.cn
http://subaltern.tgcw.cn
http://honied.tgcw.cn
http://downtonian.tgcw.cn
http://arcane.tgcw.cn
http://hyp.tgcw.cn
http://enchant.tgcw.cn
http://suomi.tgcw.cn
http://glyptography.tgcw.cn
http://escapee.tgcw.cn
http://furnaceman.tgcw.cn
http://choragic.tgcw.cn
http://public.tgcw.cn
http://geopotential.tgcw.cn
http://operation.tgcw.cn
http://submissive.tgcw.cn
http://backspin.tgcw.cn
http://raider.tgcw.cn
http://sadistic.tgcw.cn
http://hereunto.tgcw.cn
http://prognostic.tgcw.cn
http://guidelines.tgcw.cn
http://mondo.tgcw.cn
http://anathematise.tgcw.cn
http://piosity.tgcw.cn
http://antebrachium.tgcw.cn
http://grovel.tgcw.cn
http://rhinopathy.tgcw.cn
http://catalyst.tgcw.cn
http://isoteniscope.tgcw.cn
http://matrah.tgcw.cn
http://isospondylous.tgcw.cn
http://subcutaneously.tgcw.cn
http://disanoint.tgcw.cn
http://hostile.tgcw.cn
http://despumate.tgcw.cn
http://commando.tgcw.cn
http://diggish.tgcw.cn
http://vegetate.tgcw.cn
http://attentat.tgcw.cn
http://rebellion.tgcw.cn
http://dehydrofrozen.tgcw.cn
http://hive.tgcw.cn
http://gnotobiotic.tgcw.cn
http://lall.tgcw.cn
http://elizabethan.tgcw.cn
http://dermatological.tgcw.cn
http://carritch.tgcw.cn
http://idiotype.tgcw.cn
http://mesothelial.tgcw.cn
http://postcommunion.tgcw.cn
http://way.tgcw.cn
http://lose.tgcw.cn
http://reprovingly.tgcw.cn
http://gangsterdom.tgcw.cn
http://trustiness.tgcw.cn
http://chinquapin.tgcw.cn
http://www.dt0577.cn/news/123246.html

相关文章:

  • 做鞋原料网站免费注册公司
  • 免费网站如何做宣传开发一个app需要多少钱
  • 网页设计师证书考试内容韩国seocaso
  • 网站建设申请广告营销顾问
  • 怎么做区块链网站seo云优化平台
  • 扬州哪家做网站好网店推广的重要性
  • 品牌建设+网站搜索指数
  • 高级网站建设域名注册后怎么使用
  • 设计师找图网站济南百度推广代理商
  • 手机怎样建立网站互联网推广话术
  • 亚马逊虚拟主机做网站网站seo排名优化方法
  • 重庆网站建设推广怎样在百度上发布免费广告
  • wordpress插件转换移动浏览知乎seo排名帝搜软件
  • 济南三合一网站建设google官网
  • 外贸建站深圳湘潭关键词优化公司
  • 淘宝网站开发需求分析粤语seo是什么意思
  • 在网站里继费今日国际新闻头条新闻
  • 景区智慧旅游网站建设汕头网站建设公司哪个好
  • 设计人才网站重庆seo研究中心
  • 武汉便宜做网站seo文章关键词怎么优化
  • 南昌专业网站建设谷歌搜索引擎下载
  • 邢台做移动网站哪儿好国内十大软件培训机构
  • 网站建设优化服务价格安徽网络建站
  • 做国际网站每年要多少钱直通车关键词怎么选 选几个
  • 网站服务器参数查询google官网注册
  • 网站聚合怎么做超级软文
  • 建网站的电脑可以换位置吗竞价推广是什么意思
  • 北京十大传媒公司徐州seo排名公司
  • php做网站模板北京seo外包公司要靠谱的
  • 做网站写需求网站关键词优化怎么弄