LeetCode496. 下一个更大元素 I

LeetCode496. 下一个更大元素 I_第1张图片

思路一:暴力解法

遍历取出数组nums1中的每一个数,然后将每个数在nums2数组中找到下一个最大的数

详细代码:

public int[] nextGreaterElement(int[] nums1, int[] nums2) {
		int[] nums3=new int[nums1.length];
        for(int j=0;jnum) {
        				nums3[j]=nums2[i];
        				break;
        			}
        		}
        		if(flag==true&&nums3[j]==0)
        			nums3[j]=-1;
        	}
        }
        return nums3;
    }

思路二:使用栈

可以使用栈来解决,因为nums1中的元素都在nums2中,所以可以通过找nums2中的每个元素的下一个最大元素来获得一个表,最后通过查表来解决问题

首先创建栈,先遍历nums2数组,当栈不为空的时候,看栈顶元素如果比当前元素大,就将当前元素入栈,栈顶元素如果比当前元素小,就将栈顶元素弹出来,这两个就形成键值对,将键值对存到HashMap中,最后遍历nums1找到对应的数据就可以

代码:

//使用栈的思想
	public int[] nextGreaterElement(int[] nums1, int[] nums2) {
		Stack stack=new Stack<>();//创建栈
		Map map=new HashMap<>();
		for(int i=0;i

 

 

你可能感兴趣的:(刷题)