Leetcode 503. Next Greater Element II JAVA语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 503. Next Greater Element II JAVA语言相关的知识,希望对你有一定的参考价值。
Given a circular array (the next element of the last element is the first element of the array), print the Next Greater Number for every element. The Next Greater Number of a number x is the first greater number to its traversing-order next in the array, which means you could search circularly to find its next greater number. If it doesn‘t exist, output -1 for this number. Example 1: Input: [1,2,1]Output: [2,-1,2]Explanation: The first 1‘s next greater number is 2; The number 2 can‘t find next greater number; The second 1‘s next greater number needs to search circularly, which is also 2. Note: The length of given array won‘t exceed 10000.
题意:给一个循环数组,求解其next greater number:第一个比其大的数。
public class Solution { ////这个思路是直接double数组,把原来的循环简化了。貌似还有用栈的。再看看。 public int[] nextGreaterElements(int[] nums) { if(nums.length==1){ nums[0]=-1; return nums; } int[] newnums=new int[nums.length*2]; for(int i=0;i<newnums.length;i++){ newnums[i]=nums[i%nums.length]; } // for(int i=0;i<nums.length;i++){ // newnums[i]=nums[i]; // } // int index=0; // for(int i=nums.length;i<newnums.length;i++){ // newnums[i]=nums[index++]; // } // for(int i=0;i<nums.length*2;i++){ // System.out.println(newnums[i]+" "); // } for(int i=0;i<nums.length;i++) for(int j=i+1;j<i+nums.length;j++) if(newnums[j]>newnums[i]){ nums[i]=newnums[j]; break; }else{ nums[i]=-1; } return nums; } }
PS:听群里大神说把数组直接double一下,然后就可以简化了,【好厉害】。然后就是暴力搜索了。。。。。。。。貌似还有栈!
栈的话,若当前元素小于等于栈顶元素,直接入栈。若大于栈顶元素,即将所有小于该元素的值出站,并作为=他们的next greater number。再来一次循环,只出栈,看看能不能找到比他大的元素。最后看看栈里的元素就是最大值,直接设为-1
以上是关于Leetcode 503. Next Greater Element II JAVA语言的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 503. Next Greater Element II JAVA语言
Leetcode 503. Next Greater Element II