当前位置: 首页 > 后端技术 > Java

LeetCode-496-NextGreaterElementI

时间:2023-04-02 01:02:23 Java

NextGreaterElementI问题描述:给你两个没有重复元素的数组nums1和nums2,其中nums1是nums2的子集。请在nums2中找出nums1中每个元素的下一个更大的值。nums1中数字x的下一个更大的元素是在nums2中x的相应位置右侧第一个大于x的元素。如果不存在,则对应位置输出-1。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:暴力破解法首先声明一个和nums大小相同的数组存放结果,然后遍历nums1中的元素:声明2个boolean变量,equals表示是否在nums2中寻找一个值等于的元素当前nums位置;found表示是否在nums2中对应位置右侧找到第一个大于x的元素;内层循环遍历nums2中的元素,找到与nums1当前位置相同的元素,然后判断其后面是否有更大的元素element,如果没有找到,则将结果集中对应位置的元素置为-1.最后返回结果集。publicclassLeetCode_496{/***暴力破解法**@paramnums1*@paramnums2*@return*/publicstaticint[]nextGreaterElement(int[]nums1,int[]nums2){//结果集int[]result=newint[nums1.length];//遍历nums1中的元素for(inti=0;inums1[i]){found=true;结果[i]=nums2[j];休息;}}else{if(nums2[j]==nums1[i]){equals=true;}}}//最后,如果找到,将当前位置的值设置为-1if(!found){结果[i]=-1;}}返回结果;}publicstaticvoidmain(String[]args){int[]num1={4,1,2};int[]num2={1,3,4,2};//测试用例,预期输出:-1,3,-1for(inti:nextGreaterElement(num1,num2)){System.out.print(i+",");}}}【每日留言】舍弃有限,赢得无限