思路:保存数字中一个值和次数,当遍历到下个数字时,如果和保存数字相同次数加1,否则次数减1,当次数为0,则保存下一个数字,并把次数设为1,因为要找的数字次数超过一半,那么最后一个保存的数字一定就是要找的数字。public class MoreThanHalfNum {
/**
* 需找次数超过一半数字
* @param nums
* @param le...
分类:
编程语言 时间:
2015-05-24 11:38:40
阅读次数:
103
【题意】:数组中有一个数字出现超过半数以上,找出这个数字。【解析】:一个数字超过半数以上,这是本题仅有的条件,所以,我们要从这个条件入手。数字超过半数有什么特性呢?首先这个数字肯定是这些数的中位数。所以可以排序,然后找中位数。但是时间复杂度为排序的O(n*logn),还可以再快吗?现在有这么一个思路...
分类:
编程语言 时间:
2015-05-13 06:05:28
阅读次数:
141
转!http://blog.csdn.net/dabusideqiang/article/details/3827166111、求旋转数组的最小数字题目:输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。分析:数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾。例如数组{3, 4, 5, ...
分类:
编程语言 时间:
2015-05-03 15:59:41
阅读次数:
498
题目:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
解法一:
先将数组排序,然后出现次数超过一半的数字就是a[n/2+1],时间复杂度O(nlgn)。
解法二:O(n)
基本思想:
消除原理:在遍历数组的时候保存两个值:一个...
分类:
编程语言 时间:
2015-04-30 14:23:07
阅读次数:
91
【题 目】数组中有一个数字的出现次数超过了该数组长度的一半,找出这个数字。 【思 路1】由于要寻找的数字的出现次数超过了数组长度的一半,所以如果将该数组排序,那么它的中位数必然是我们要寻找的数字,所以我们的任务就是对该数组进行排序,而性能最好的快速排序的时间复杂度为O(nlogn),我们可以直...
分类:
编程语言 时间:
2015-04-04 22:30:23
阅读次数:
257
??
《剑指Offer》P163
题目:找出数组中一个出现次数超过整个数组长度一般的数字
解法一:将原问题转化为求数组的中位数,采用快速排序的思想,每一次Partition取末位为哨兵,遍历将小于、大于哨兵的数分别移至哨兵左右,最后返回哨兵在处理后的数组中的位置。不断缩小要处理的数组的长度大小,最终确定返回值为数组长度一半的元素,即为中位数。
解法二:由...
分类:
编程语言 时间:
2015-03-17 10:33:19
阅读次数:
159
数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如果有好的题目,随时更新。
数组求和求数组的最大值和最小值求数组的最大值和次大值求数组中出现次数超过一半的元素求数组中元素的最短距离求两个有序数组的共同元素求三个数组的共同元素找出数组中唯一的重复元素找出出现奇数次的元素求数组中满足给定和的...
分类:
编程语言 时间:
2015-01-06 18:05:00
阅读次数:
230
题目描述:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
看到这个题目,我自己想到的方法:
另外申请一个数组B,用来存放该数组A 元素出现的次数,再遍历B数组,出现次数最多的就是;但是这个如果A数组当中的元素有个是1000,那么B数组就要申...
分类:
编程语言 时间:
2014-12-26 14:47:30
阅读次数:
237
题目1370:数组中出现次数超过一半的数字
时间限制:1 秒内存限制:32 兆特殊判题:否提交:2844解决:846
题目描述:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
输入:
每个测试案例包括2行:
第一行输入一个整数n(1<=n<=100000...
分类:
编程语言 时间:
2014-12-09 12:16:13
阅读次数:
147
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2出现了5次,超过数组长度的一半,因此输出2.分析:最直接方法,先对数组进行排序,然后统计每个数出现的次数就可以找出该数字。时间复杂度为O(nlogn)..
分类:
编程语言 时间:
2014-12-04 16:00:42
阅读次数:
282