当前位置:   article > 正文

2023华为od机试C卷【转盘寿司】Python 实现_华为c卷python

华为c卷python

目录

题目

思路

Code


题目

寿司店周年庆,正在举办优惠活动回馈新老客户寿司转盘上总共有 n 盘寿司,prices[i] 是第i盘寿司的价格,如果客户选择了第i盘寿司,寿司店免费赠送客户距离第i盘寿司最近的下一盘寿司j,前提是 prices[j] < prices[i],如果没有满足条件的j,则不赠送寿司。
每个价格的寿司都可无限供应。
输入描述
输入的每一个数字代表每盘寿司的价格,每盘寿司的价格之间使用空格分隔
寿司的盘数 n 范围为: 1<=n <= 500

输出描述
输出享受优惠后的一组数据,每个值表示客户选择第i盘寿司时实际得到的寿司的总价格。使用空格进行分隔。

示例1:
输入:

3 15 6 14
输出:

3 21 9 17

思路

1:有点像单调栈的思想。

2:目的就是要找到当前位置的后面的第一个价格小于当前位置的寿司。但是题目中有一个非常恶心的隐藏条件:【寿司转盘】,这就说明这一个闭环的数组。

3:所以我们把原始数据组延长一倍,然后直接用单调栈的模板算法就行了。

4:leetcode 单调栈大全 https://leetcode.cn/tag/monotonic-stack/problemset/

Code

  1. # coding:utf-8
  2. #JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
  3. import functools
  4. import sys
  5. from collections import Counter, defaultdict
  6. import copy
  7. from itertools import permutations
  8. import re
  9. import math
  10. import sys
  11. from queue import Queue
  12. input_str = input()
  13. tmp2 = [int(x) for x in input_str.split(" ")]
  14. count = 0
  15. nums = [0 for i in range(2*len(tmp2))]
  16. for i in range(len(tmp2)):
  17. nums[i] = tmp2[i]
  18. nums[i+len(tmp2)] = tmp2[i]
  19. count += 2
  20. res = [0 for i in range(2*len(tmp2))]
  21. stack = []
  22. i=0
  23. while(True):
  24. if(i>=count):
  25. #没有比它更小的数字的话,那就不赠送寿司,本身就是实际得到寿司的最大价格
  26. while (len(stack)>0) :
  27. next_pos = stack.pop()
  28. res[next_pos] = nums[next_pos]
  29. output_str= ""
  30. #输出一半就行了
  31. for k in range(len(tmp2)):
  32. output_str += str(res[k]) + " "
  33. print(output_str[0:-1])
  34. break
  35. else:
  36. #单调递减栈,套用下面的模板即可
  37. #https://blog.csdn.net/qq_39445165/article/details/118467075
  38. while (len(stack)>0 and nums[stack[-1]] > nums[i]):
  39. next_pos = stack.pop()
  40. res[next_pos] = nums[next_pos] + nums[i]
  41. stack.append(i)
  42. i+=1

【华为od机试真题Python+JS+Java合集】【超值优惠】:Py/JS/Java合集

【华为od机试真题Python】:Python真题题库

【华为od机试真题JavaScript】:JavaScript真题题库

【华为od机试真题Java】:Java真题题库

【华为od机试真题C++】:C++真题题库

【华为od机试真题C语言】:C语言真题题库

【华为od面试手撕代码题库】:面试手撕代码题库

【华为od机试面试交流群:830285880】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/622275
推荐阅读
相关标签
  

闽ICP备14008679号