2020-字節跳動筆試(最少工資)


題目描述:

         第一行 n (n<1000)

          第二行n個數, 表示n個人入公司的年限.發工資的規則是這樣的, 入職年限高的比入職年限低的工資高, 但所幸的是每一個人只會知道身邊兩人的工資情況.

問滿足此情況的最少工資數.

樣例:

       輸入1

         4

    1 2 3 2

      輸出1

            700 (100, 200, 300)

      輸入2

    6

             1 3 3 3 2 1

  輸出2:

    1300(100, 300, 300, 200, 100)

 

事實證明我的想法是錯誤的...哭了...

1 3 3 2 1 是這樣的 (100,200,300,200,100)

相同之間並沒有什么關系啊  這是leetcode上面一道原題: 135. 分發糖果

核心: leetcode題解分別從左到右掃描一遍,  從右到左掃描一遍....寫的真好

我也試着用谷峰谷低的思想重新了一下

class Solution:
    def candy(self, ratings) -> int:
        lenth, i = len(ratings), 0
        val = [1]*lenth
        while i+1<lenth:
            while i+1<lenth and ratings[i]<ratings[i+1]:
                val[i+1]=val[i]+1
                i += 1
            top = i
            while i+1<lenth and ratings[i]>ratings[i+1]:
                i+=1
            for j in range(i-1, top-1, -1):
                val[j]=max(val[j+1]+1, val[j])
            while i+1<lenth and ratings[i+1]==ratings[i]:
                i+=1
        ans = 0
        for i in range(lenth):
            ans+=val[i]
        return ans

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM