作者简介:大家好,我是未央;
博客首页:未央.303
系列专栏:笔试强训编程题
每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!
前言
一、字符串中找出连续最长的数字串 69385
题目描述
给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如:输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
输入描述:
保证数组输入非空,且保证有解
示例:
题目解析:
解题思路:
看到本题后主要有两种思路:
思路一(常见简单的)
- 首先对我们的数组进行排序操作(不限升降关系);
- 找到中间的字母X;
- 然后对这个数组进行遍历操作;(看一下这个数组出现了多少次)
思路二(众数消去思想)
总体思路描述:
如果两个数不相等,就消去这两个数;
最坏的情况下,每次会消去一个众数和非众数;
那么如果存在众数的话,最后留下的数一定是众数;但是如果不纯在众数,则一定不是;
(所以这个地方依然要通过遍历数组来判断最后一个数是否为众数)
代码实现
思路一:
思路二:
总结