您的位置:首页 > 房产 > 建筑 > 网站建设制作费_网址导航模板_360搜索引擎推广_网络推广与营销

网站建设制作费_网址导航模板_360搜索引擎推广_网络推广与营销

2024/12/29 3:16:48 来源:https://blog.csdn.net/weixin_65829986/article/details/143457068  浏览:    关键词:网站建设制作费_网址导航模板_360搜索引擎推广_网络推广与营销
网站建设制作费_网址导航模板_360搜索引擎推广_网络推广与营销

老样子,题目:496. 下一个更大元素 I - 力扣(LeetCode)

题解:代码随想录

AC代码:

class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {Stack<Integer> stack=new Stack<>();int[] res=new int[nums1.length];Arrays.fill(res,-1);HashMap<Integer,Integer> hashMap=new HashMap<>();for(int i=0;i<nums1.length;i++){hashMap.put(nums1[i],i);}stack.add(0);for(int i=1;i<nums2.length;i++){if(nums2[i]<=nums2[stack.peek()]){stack.add(i);}else{while(!stack.isEmpty()&&nums2[i]>nums2[stack.peek()]){if(hashMap.containsKey(nums2[stack.peek()])){Integer index=hashMap.get(nums2[stack.peek()]);res[index] = nums2[i];}stack.pop();}stack.push(i);}}return res;}
}

和昨天的每日温度差不多,但是要复杂一点

但是也差不多,题目的意思是让我们找出num1每个元素在num2中相应位置从右边起第一个比它大的值,这就好办了,和昨天的几乎就快一样了,只不过是两个数组而已,因为nums1是nums2的子集,其实我们就将nums2放入栈中维护就行了,按照单调递减栈来维护,如果出现需要进行维护的元素了就查看此刻栈顶的值是不是在nums1中出现,是就可以记录当前nums1的下一个更大数了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com