摘要: 1. 在一个数组中找出出现次数超过n/2的元素 第一次看到这个题目是在《编程之美》上,书上给的算法是,每次从数组中删除两个不一样的元素,那最后剩下的就是出现次数超过n/2的元素,但是这种很直观的办法要么就是破坏原来的数组,要么将原数组复制一份,这样都不好,有没有空间需求是O(0),而且不破坏原数组的方法呢? 下面就是这样的一种方法,用一个计数器统计出现次数,如果发现一个跟现在保存的值不一样的,就将其减一,如果计数变成0,那么就需要更新这个值,其思想跟之前的类似,但是它的空间需求是O(0)的。下面是代码: staticvoid Main(string[] args) { int[] list . 阅读全文