1206. 下一个更大的数 I

1206. 下一个更大的数 I

中文English

你有两个数组 nums1nums2(互不重复),其中nums1nums2的子集。 在nums2的相应位置找到nums1所有元素的下一个更大数字。

nums1中的数字x的下一个更大数字是nums2中x右边第一个更大的数字。 如果它不存在,则为此数字输出-1。

样例

例子 1:

输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
输出: [-1,3,-1]
解释:
     对于第一个数组中的数字4,在第二个数组中找不到下一个更大的数字,因此输出-1。
     对于第一个数组中的数字1,第二个数组中的下一个更大数字是3。
     对于第一个数组中的数字2,第二个数组中没有下一个更大的数字,因此输出-1。

例子 2:

输入: nums1 = [2,4], nums2 = [1,2,3,4].
输出: [3,-1]
解释:
     对于第一个数组中的数字2,第二个数组中的下一个更大数字是3。
     对于第一个数组中的数字4,第二个数组中没有下一个更大的数字,因此输出-1。

注意事项

1.nums1nums2中的所有数字都是唯一的。
2.nums1nums2的长度不超过1000。

输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param nums1: an array
    @param nums2: an array
    @return:  find all the next greater numbers for nums1's elements in the corresponding places of nums2
    """
    '''
    大致思路:
    1.循环nums1,首先在nums2中找到num1中出现的数字,然后循环接下来的数组,找到更大的数,如果存在,则返回。否则返回-1.
    '''
    def nextGreaterElement(self,nums1,nums2):
        res = []
        for i in nums1:
            index_i = nums2.index(i)
            s = nums2[index_i:]
            for j in range(len(s)):
                if s[j] > i:
                    res.append(s[j])
                    break
            else:
                res.append(-1)
        return res

 

posted @ 2020-04-18 20:29  风不再来  阅读(293)  评论(0编辑  收藏  举报