julycoding / The-Art-Of-Programming-By-July-2nd

本项目曾冲到全球第一,干货集锦见本页面最底部,另完整精致的纸质版《编程之法:面试和算法心得》已在京东/当当上销售

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

4.3:出现次数超过一半的数字 解法3 结论错误

kissghosts opened this issue · comments

commented

解法三“每次删除两个不同的数”的思路是可行的,即使对于作者目前给出的反例{5, 5, 5, 5, 1},不过要在每次删除时进行判断,如果无法找到两个不同的数,那说明当前剩余元素全部相同,返回这个元素值即可。

比如对于序列{5, 5, 5, 5, 1},每次分别从数组两端尝试各删除一个数(左边删除5, 右边删除1,两个数不相同),之后剩余{5, 5, 5},这时无法找到两个不同的数进行删除,说明剩余元素全部相同,返回5作为结果即可!

commented


对于序列{5, 5, 5, 5, 1},每次分别从数组两端尝试各删除一个数,貌似的确可以。
不过,顺带,解法四中的阐述是不是更好,虽然方法差不多

commented

对,解法四确实更高效一些,不过两种方法的基本思路其实是一样的 :)