当青训营遇上码上掘金-攒青豆灵感 这个题目我是使用C语言进行求解的,在我看来这个题目是全部题目中创造性和难度性最小的一个题目。在写这道题目时最初我认为可以用数组很好地解决,但是我发现由于预先不知道有多个数据,数组操作起来并没有很方便,于是我采用了链表的形式来记录和操作数据,我将输入的数据存入链表中,然后我从最先存入的数据开始判断,先令最先存入的数据为左最大,然后依次判断之后存入的数据的最大值,令为右最大,然后判断第二个存入的数据和两个最大之中较小一个的差距,如果大于或等于则不能攒下青豆,如果小于则可以攒下青豆,如果大于左最大,则在之后的判断中将其替换为左最大,如果等于右最大,则在之后的判断中需要重新检索一边找到新的右最大,就这样遍历到倒数第二个存入的数据就可以的到能攒下青豆的个数。这个代码也存在许多可以优化的点,首先这个算法虽然可以正确地算出正确答案,但是过程太过于繁琐,算法可以进行优化。而且由于是链表的原因可以很有效地避免前置0的情况,或者前置非递减树列,因为这样都是无法装入青豆的,同样可以事先倒序检索一边,这样从后向前的后置0以及后置的非递减数列也可以不用记录或者不用再每次遍历中占用没有意义的时间了。并且可以不用每次相同就采用重新遍历的方法,可以事先用哈希表记录一下,如果遍历过了,就减去,这样可以更便捷地知道左最大和右最大,避免了很多次的遍历,优化了代码。