• 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

     

  • 相关阅读:
    学员操作——隔行变色
    jQuery基础及选择器(1)
    学员操作——组合继承
    JavaScript面向对象
    学员操作——创建继承person的student子类
    学员操作——flower函数
    JavaScript操作DOM(2)
    JavaScript操作DOM(1)
    学员操作——制作秒表定时器
    学员操作——制作5s关闭广告
  • 原文地址:https://www.cnblogs.com/xidian-mao/p/11337961.html
Copyright © 2020-2023  润新知