美文网首页
leetcode503 下一个更大元素 II golang

leetcode503 下一个更大元素 II golang

作者: lucasgao | 来源:发表于2021-03-06 01:02 被阅读0次

503. 下一个更大元素 II

解题思路

模拟解法,利用下标优化。
A[i]表示数组中下一个大于nums[i]的下标,如果不存在则标记为i
我们从后向前遍历数组,利用动态规划,所有大于当前下标 current_i 的都已经计算过了。

  1. 对于大于 current_i 的下标 j , 如果 nums[j] 大于nums[current_i],则A[i]=j
  2. 如果小于,则令 j = A[j],去下一个大于nums[j]的下标。这里有2个case需要处理
    1. 如果 j > i && A[j] == j 则证明不存在数大于A[j],而A[i]>=A[j],更不存在,所以A[i]=j
    2. 如果 j <i证明还没有计算,则j++

代码

func nextGreaterElements(nums []int) []int {
    A := make([]int, len(nums))
    n := len(A)
    for i := n - 1; i >= 0; i-- {
        A[i] = i
        for j := i + 1; j != i; {
            j %= n
            if j == i {
                break
            }
            if nums[j] > nums[i] {
                A[i] = j
                break
            }
            if j > i {
                if A[j] == j {
                    break
                } else {
                    j = A[j]
                }
            } else {
                j++
            }
        }
    }
    for i:=range A{
        if A[i]==i{
            A[i]=-1
        }else{
            A[i]=nums[A[i]]
        }
    }
    return A
}

相关文章

  • leetcode503 下一个更大元素 II golang

    503. 下一个更大元素 II[https://leetcode-cn.com/problems/next-gre...

  • 单调栈

    496. 下一个更大元素 I 503. 下一个更大元素 II[https://leetcode-cn.com/pr...

  • 2021.3.6每日一题

    503. 下一个更大元素 II[https://leetcode-cn.com/problems/next-gre...

  • 栈-N1019-链表中的下一个更大节点

    题目 概述:给定一个链表,要你求该链表每个元素的下一更大元素,如果不存在下一个更大元素则下一个更大元素为0 输入:...

  • 下一个更大元素 II(LeetCode 503)

    题目 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下...

  • 503. 下一个更大元素 II

    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一> 个更大元素。数字 x 的下一...

  • 下一个更大元素

    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更...

  • 556. 下一个更大元素 III

    556. 下一个更大元素 III[https://leetcode.cn/problems/next-greate...

  • 栈-N503-下一个更大元素 II

    题目 概述:给定一个循环数组,输出每个元素的下一个更大元素,如果不存在则输出-1 输入:循环数组,数组长度范围[0...

  • 栈2

    继续刷栈!!! leetcode 496 下一个更大的元素I 维护一个栈,当下一个元素比栈顶大时,出栈直到栈顶大于...

网友评论

      本文标题:leetcode503 下一个更大元素 II golang

      本文链接:https://www.haomeiwen.com/subject/xhhjqltx.html