4-2(vector)
作者:互联网
今天主要完成了3道题目以及vector的初步使用
题目一:一列数中,找出只出现一次的数,别的数都出现2次。
思想:利用异或,因为相同为0,相异为1。
题目二:由题一变形:找出一堆数中出现一次的2个数,别的数都出现2次
思想:第一步:将所有数异或,得到的为出现一次的2个数的异或结果val。第二步:根据val找出第一个为1的位i,因为为1代表这2个数该位是不同的。第三步,根据该位i将所有数分为2组,这样就成功这2个数分为了2组,然后将2组分别异或,就得到了这2个数。
题目三:也是题目一的变形:有一堆数,找出只出现一次的数,别的数都出现3次。
思想:定义一个32位的数组,将所有数所有位的1统计起来,如果某个位的1的个数位3n+1,则该位定有出现一次的数,否则不是,根据这点,可以将数还原出来。
vector的使用:
首先vector是一个动态的数组,想当于一个模板,根据类型来决定是什么类型的数组,由start,finish,endofstorage三个指针控制该数组,start指向的是第一个位置,finish指向的是size位置,endofstorage指向的是capacity。
标签:题目,个数,数都,异或,vector,数组 来源: https://blog.51cto.com/15085121/2681428