手撕第二题只遍历一遍的话感觉可以用单调队列解决 code: public static int MAX = 100001; public static int [] maxDeque = new int[MAX]; public static int [] minDeque = new int[MAX]; public static int maxHead,maxTail; public static int minHead,minTail; public static int method(int [] nums){ int n = nums.length; int ans = Integer.MIN_VALUE; for(int i = 0;i < n;i ++){ while(maxHead < maxTail && nums[maxDeque[maxTail - 1]] < nums[i]){ maxTail--; } maxDeque[maxTail++] = i; while(minHead < minTail && nums[minDeque[minTail - 1]] > nums[i]){ minTail--; } minDeque[minTail++] = i; int max = nums[maxDeque[maxHead]] - nums[minDeque[minHead]]; ans = Math.max(ans,max); } return ans; }
点赞 1

相关推荐

11-10 21:00
门头沟学院 Java
程序员牛肉:没啥必要了,3月末就开暑期实习了,你现在找还不一定能找到。看你啥学历了。 双非基本代表想进好公司无望了。211的话,现在继续沉淀,零日常实习参加暑期其实也压力不太大
点赞 评论 收藏
分享
11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务