**统计就需要用到数据结构,给个容器放一堆数据,在一堆数据找出什么什么。
比如ip地址相同的有几个,出现多少次,是否在攻击你
不同的习题是让你对不同的数据结构有深刻理解,不然数据结构不会用
现在用列表,有多少元素迭代多少次即可,
这样也有缺点,有多少个元素,退队多少个,来标记它的状态,既然是一种标记,在现在的过程中,无非就是标记0和1,仿照计算机按位来标记,这种思想叫位图,
但如果要记录元素出现了多少次,用位就表示不了了,有了次数标记下来就大了去了,比如300次,一个字节表示不了,一个字节最多也就表示256种状态,这个时候就没办法了
**
先自定义好数字,成都,然后标记位states
下面就是两层循环了
flag标记为,上来就表示一上来并没有重复(假定没有重复),每一趟迭代i
内存循环判断,如果重复flag=true,就打个标记states【j】1
如果相等,标记位变了
里面的循环做完了,flag = true ,说明遇到过相同的
states【i】标记成1
samenums相同数加进来
如果不相同,不一样的数字加进去
diffnums。append
这是最核心的代码,但是都还没怎么优化
列表的优势在于索引,
出现重复的是11,7,单个的5,6
现在稍微做下改变就可以取到它的个数,
每一次进来的时候count=0,内层找到就+1
i+1向后找,找到11,标记=0+1=1,在找到11,count+1=2
反过来,就有3了
有了count,flag就没什么用了,count!=0代表重复过
第二次循环开始,7count标记1
再一次循环,count=2
然后写个随机数,range是前包后不包,ranange前包后包
可以改造成列表解析式,这两个东西是等价的