dengxinyi 6 jaren geleden
bovenliggende
commit
f3d35cf7a4
1 gewijzigde bestanden met toevoegingen van 23 en 0 verwijderingen
  1. 23 0
      medium/503.next-greater-element-ii.go

+ 23 - 0
medium/503.next-greater-element-ii.go

@@ -0,0 +1,23 @@
+func nextGreaterElements(nums []int) []int {
+	n := len(nums)
+	next := make([]int, n)
+	if n == 0 {
+		return next
+	}
+	next[0] = -1
+	for i := 1; i < n; i *= 2 {
+		copy(next[i:], next[:i])
+	}
+	st := make([]int, 0)
+	l := 0
+	for i := 0; i < 2*n; i++ { // Keep a decreasing stack, and traversal for twice
+		for l != 0 && nums[st[l-1]] < nums[i%n] {
+			next[st[l-1]] = nums[i%n]
+			st = st[:l-1]
+			l--
+		}
+		st = append(st, i%n)
+		l++
+	}
+	return next
+}