数组中有一个数字出现的次数超过了数组长度的一半,找出这个数 这个算法的时间复杂度是O(n),另外用了两个辅助变量。 k用于临时存储数组中的数据,j用于存储某个数出现的次数。 开始时k存储数组中的第一个数,j为0,如果数组出现的数于k相等,则j加1,否则就减1,如果j为0,就把当前数组中的数赋给k ...
题目:在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。要求: 给出算法的基本设计思想。 根据设计思想,采用C或C 或Java语言描述算法,关键之处给出注释。 说明你所设计算法的时间复杂度和空间复杂度。 算法实现: 时间复杂度为O n 。空间复杂度O 。 另解 本题最直接的方法就是对每个数字进行排序。然后输出出现次数最大的数字即可,但排序 ...
2014-10-28 16:19 0 2354 推荐指数:
数组中有一个数字出现的次数超过了数组长度的一半,找出这个数 这个算法的时间复杂度是O(n),另外用了两个辅助变量。 k用于临时存储数组中的数据,j用于存储某个数出现的次数。 开始时k存储数组中的第一个数,j为0,如果数组出现的数于k相等,则j加1,否则就减1,如果j为0,就把当前数组中的数赋给k ...
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 比如输入一个长度为9的数组{1,2。3。2,2。2。5,4。2}, 因为数组中数字2出现了5次,超过数组的长度的一半,因此输出2 一种办法是先把数组排序。那么超过一半的元素一定是数组最中间的元素 ...
参考地址:http://www.cnblogs.com/DayByDay/p/3871834.html?utm_source=tuicool&utm_medium=referral 题目:找出数组中出现次数超过一半的元素(前提是该元素一定存在) 解法1:每次删除数组中两个不同的元素 ...
1152: 零起点学算法59——找出一个数组中出现次数最多的那个元素 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 990 Accepted: 532[Submit][Status ...
重点有三个:1,通过嵌套for循环,把数组的每一项,跟整个数组中的所有项,比较一遍;2,通过if判断,如果有相等的项,count++,并把相等的项置为-1,这样可以判断等于-1的就是重复的,就不再加入新数组了;3,用if判断!=-1,决定是否加入新数组中,返回。 ...
程序员=编程语言基础+数据结构+算法 这几天继续回归java基础,以及学习数据结构的知识,这里实现一个简单的算法----找出数组中一个数字出现次数最多的数字的算法 打印结果如下: 出现次数最多的数字为:2 该数字一共出现6次 ...