找出数组中每个数的右边第一个比它大的数

如题#春招##笔试题目##字节跳动#
全部评论
单调栈
点赞 回复 分享
发布于 2018-06-07 22:38
https://blog.csdn.net/Broken_Wave/article/details/82390882 import java.util.Stack; public class FindRightMax { public static void main(String[] arg) { int array[]=new int[] {1,5,3,6,4,8,9,10}; int res[]=findMax(array); for(int num:res) { System.out.println(num); } } public static int[] findMax(int[] array) { int len =array.length; Stack<Integer> st = new Stack<Integer>(); int res[]=new int[len]; int i=0; while(i<len) { if(st.isEmpty()||array[i]<=array[st.peek()]) { st.push(i); i++; }else { res[st.pop()]=array[i]; } } while(!st.isEmpty()) { res[st.pop()]=-1; } return res; } }
点赞 回复 分享
发布于 2018-09-04 21:59
我若干个月前也是这道题………
点赞 回复 分享
发布于 2018-06-07 23:56
function firstLargeNum(num) { let i = 0; let ans = [], stack = []; for (i = num.length - 1; i >= 0; i--) { while (stack.length > 0) { let top = stack[stack.length - 1]; if (top > num[i]) { ans.unshift(top); break; } else { stack.pop(); } } if (stack.length === 0) { ans.unshift(-1); } stack.push(num[i]); } return ans; }
点赞 回复 分享
发布于 2022-11-24 18:21 北京

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务