LeetCode下一个更大元素 II

LeetCode下一个更大元素 II

  • 问题分析
  • 算法复杂度

力扣503.

问题分析

题目给定一个循环数组,输出每个元素的下一个更大元素。
数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。

注意: 输入数组的长度不会超过 10000。

public class Main {public int[] nextGreaterElements(int[] nums) {Stack<Integer> stack = new Stack<Integer>();Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < 2 * nums.length; i++) {while (!stack.isEmpty() && nums[stack.peek()] < nums[i % nums.length]) {if (map.containsKey(stack.peek())) {stack.pop();} else {map.put(stack.peek(), nums[i % nums.length]);}}stack.push(i % nums.length);}while (!stack.isEmpty()) {if (map.containsKey(stack.peek()))stack.pop();elsemap.put(stack.pop(), -1);}for (int i = 0; i < nums.length; i++) {nums[i] = map.get(i);}return nums;}
}

算法复杂度

时间复杂度:O(n)
空间复杂度:O(n)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部