当前位置:   article > 正文

分奖金(python)_分奖金问题算法python

分奖金问题算法python

题目描述

老板要给员工分配奖金,分配方式通过游戏决定。安装员工工号排序,每个人随机抽取一个数字。按照工号的顺序往后排列,遇到第一个比自己大的数字,前面员工可以获得“距离*数字差值”的奖金,如果遇到不比自己打的,就给自己分配随机数量的奖金。

输入描述

第一行n表示员工数量(包含最后一个老板)
第二行每位员工分配的随机数字
示例
3
2 10 3
输出
8 10 3

解题思路

单调栈
参考https://leetcode.cn/problems/daily-temperatures/

import copy
def assignBonus():
  staff = int(input())
  nums = list(map(int, input().split()))
  stack = []
  ans = copy.deepcopy(nums)
  for i in range(len(nums)):
    while stack and nums[i] > nums[stack[-1]]:
      preIndex = stack.pop()
      ans[preIndex] = (i-preIndex)*(nums[i]-nums[preIndex])
    stack.append(i)
  print(ans)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/47078
推荐阅读
相关标签
  

闽ICP备14008679号