对大佬的质问!一道java经典面试题的疑惑

最近刷LeetCode,遇见一道股票交易题如下(虽然大部分都知道了,但我就是要皮这一下):

    /*假设有一个数组,它的第 i 个元素是一个给定的股票在第 i 天的价格。设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。*/

    我自己做的时候,举了个数组{55,2,99,15,17,1},按照贪心算法,得出来的最大利润是,44+2=46元。当时也没多想,自我感觉还蛮良好,后面往eclipse里面复制的时候,忽然发现,尼玛啊,i=1的时候买,i=99的时候卖,利润不就是,97+2=99元,了吗。

    平白损失了一半的利润啊。

    良心过不去啊!难受啊!

    后面一想,感觉如果要得出97元的利润,实现起来还有点复杂,首先第一天的股票买不买,按照做题来说,肯定是要买的,殷问是比较的基础(更何况谁都不知道明天的股票是多少),那买了第一天就注定会丢失最大利润。

    所以我感觉这道题有点疑惑,看网上各位大佬的解答,感觉跟实际情况有点脱节的赶脚(有大佬说先遍历数组找到最小值,我天,你遍历相当于穿越到未来,回头看这一段时间的股票,这么叼,上九霄咩)。

    所以有没有可能把各种情况都考虑到的解法,包括最低价格在第一天的时候,如:{2,73,15,1,23}、{73,15,99,23}等

阅读更多
个人分类: 面试
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

对大佬的质问!一道java经典面试题的疑惑

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭