qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

查找下标比i大的值中最小的那个值,如何用单调栈实现

时间2023-09-07 17:40:44 提问来自 安徽省合肥市 的网友 分类创作 浏览971
要查找下标比i大的值中最小的那个值,可以使用单调栈实现。以下是算法的解析和代码: 1. 初始化一个栈stack,将数组中的元素依次入栈。 2. 初始化一个变量min_value,用于存储当前找到的最小值,初始值设为正无穷大。 3. 初始化一个变量min_index,用于存储当前找到的最小值的下标,初始值设为-1。 4. 遍历数组,对于每个元素arr[i]: a. 如果栈不为空且栈顶元素小于arr[i],则弹出栈顶元素,并判断是否更新min_value和min_index。 b. 将arr[i]压入栈中。 5. 遍历结束后,min_index即为所求的最小值的下标。如果min_index仍为-1,说明数组中没有比i大的值,返回正无穷大;否则返回arr[min_index]。 代码如下: ```python def find_min_greater_than_i(arr): stack = [] min_value = float('inf') min_index = -1 for i in range(len(arr)): while stack and arr[i] > stack[-1]: stack.pop() if arr[stack[-1]] < min_value: min_value = arr[stack[-1]] min_index = stack[-1] stack.append(i) return arr[min_index] if min_index != -1 else float('inf') ```

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 查找下标比i大的值中最小的那个值 下一篇 游戏要求GTX1050TI以上,Radeon 780M Graphics是否能够胜任?