首页 > 代码库 > Leetcode 503. Next Greater Element II JAVA语言
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语言
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。