一、题目
给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。
请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。
示例一:
示例二:
二、解题思路
当时写的时候想的比较简单。大体思路就是通过for循环,将num2中与num1中对应相等的数及其下标找出来,然后在数组num2中往后找符合题意的元素。
如图:
三、Java代码
class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
int[] num=new int[nums1.length]; //存储结果
int n=0;
for(int i=0;i<nums1.length;i++){
for(int j=0;j<nums2.length;j++){
if(nums2[j]==nums1[i]){
j++;
while(j<nums2.length){ //该条件说明与nums1[i]相等的元素在数组nums2中不是最后一个元素
if(nums2[j]>nums1[i]){
num[n]=nums2[j];
n++;
break;
}
j++;
}
if(j==nums2.length){ //该条件说明与nums1[i]相等的元素在数组nums2中是最后一个元素
num[n]=-1;
n++;
break;
}
}
}
}
return num;
}
}
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/next-greater-element-i 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。