栈---下一个更大元素
程序员文章站
2022-05-20 13:15:33
...
- 题目
给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。 - 示例
输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
输出: [-1,3,-1]
解释:
对于num1中的数字4,你无法在第二个数组中找到下一个更大的数字,因此输出 -1。
对于num1中的数字1,第二个数组中数字1右边的下一个较大数字是 3。
对于num1中的数字2,第二个数组中没有下一个更大的数字,因此输出 -1。
输入: nums1 = [2,4], nums2 = [1,2,3,4].
输出: [3,-1]
解释:
对于num1中的数字2,第二个数组中的下一个较大数字是3。
对于num1中的数字4,第二个数组中没有下一个更大的数字,因此输出 -1。
-
注意
nums1和nums2中所有元素是唯一的。
nums1和nums2 的数组大小都不超过1000。 -
实现代码
public class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
int []temp = new int[nums1.length];
for(int i=0;i<nums1.length;i++){
for(int j=0;j<nums2.length;j++){
//找到元素nums1[i]在nums2中对应位置j
if(nums1[i]==nums2[j]){
//从位置j开始往后遍历找比第一个比元素nums1[i]大的元素
int k = j;
for(;k<nums2.length;k++){
if(nums1[i]<nums2[k]){
//将第一个比nums1[i]大的元素记录到temp数组中
temp[i]=nums2[k];
//找到退出循环
break;
}
}
//不存在比nums1[i]大的元素,使temp[i]=-1
if(k==nums2.length){
temp[i]=-1;
}
//nums1为nums2的子集,肯定能在nums2中找到nums1中相同的元素
// 不需要考虑不存在相同元素的情况,退出循环即可
break;
}
}
}
return temp;
}
}
上一篇: LeetCode 112. 路径总和
下一篇: 约瑟夫环 (Ver. I - A)
推荐阅读
-
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
-
LintCode 1201. 下一个更大的数 II JavaScript算法
-
C++实现用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
-
Java数据算法 下一个更大元素 I
-
python web py入门(51)- jQuery - $("").next()获取同级的下一个元素
-
判断元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)是合法序列
-
JQuery获取当前元素的上一个/下一个兄弟级元素,字符串截取,转换大小写等元素等实现方法
-
算法1---实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
-
算法题目---------------01.实现一个特殊的栈,在栈的基本功能上,在实现返回栈中最小的元素
-
返回栈中最小元素&递归逆序栈