五、多数元素
一开始是使用两个for循环嵌套,但是对于较长的数组运行时间较长,效率低。最终学习了一种Boyer-Moore投票算法,该算法可以在O(n)的时间复杂度内找到数组中出现次数超过一半的元素。这种思路单纯很难想到,很强。
还有一种方法就是哈希表,但遇到数值极大或者负数怎样很好的处理呢?
七、买卖股票
个人思路:主要针对大于三天的情况。假设第一天最低,循环一次,如果有更低就买入;买入后在与后面几天对比,最高卖出。
问题:出发点错误了,主要时求最大差值。。。。。。。
显然,如果我们真的在买卖股票,我们肯定会想:如果我是在历史最低点买的股票就好了!太好了,在题目中,我们只要用一个变量记录一个历史最低价格 minprice,我们就可以假设自己的股票是在那天买的。那么我们在第 i 天卖出股票能得到的利润就是 prices[i] - minprice。