题目描述:
已知一个数组的大小,并且其中存在一个数,出现的频率大于50%,则称其为该数组的主元素。用一个算法找出这个数,要求其时间复杂度尽可能低。
ps:看过《啊哈,算法》的朋友或许知道这是作者当年的面试题目,据说还是一道考研题目。(未查证,只是听说而已)
题目分析
拿到这道题目,就题目描述来看,显然这道题目就是单纯的找一个数嘛。
Q: 额?就完了,这也叫分析题目?
A:hhhh,对呀,就是这样分析题目的呀。在我的潜意识里,在看题目的时候我一般不会直接就开始想怎么怎么去解答一个问题,而是弄清楚这道题目告诉了我们什么,需要我们解答什么。嗯,对,就是这样就行了。
额,好吧,我还是再来简单的说下题目的意思:
对于这道题目,讲述很短,那我们就需要从题意当中找出已知的信息以及一些我们需要踩的坑。这道题目给出了我们的数据总数为N,需要在其中找出一个出现次数大于N/2的数。
那么我们可以简单的罗列下:
- 已知总数为N(大小未知)
- 其中有一个数出现次数大于N/2
- 只需要找到这个数
- 没有告诉数的类型
(当然我们这道题目需要探究的不是数据类型方面或者编程实现,而是为了引入算法