LeetCodeEasy- [496.次に大きい要素I]

重複する要素のない2つの配列nums1とnums2を指定します。ここで、nums1はnums2のサブセットです。nums2のnums1の各要素の次に大きい値を見つけます。

nums1の数値xの次に大きい要素は、nums2のxより大きい位置に対応するxの右側の最初の要素を指します。存在しない場合、対応する位置は-1を出力します。

例1:

入力:nums1 = [4,1,2]、nums2 = [1,3,4,2]。
出力:[ -1,3 、-1]
説明:
    num1の数値4については、次に大きい数が配列にあるため、-1が出力されます。
    num1の数値1の場合、2番目の配列の数値1の右側にある次に大きい数値は3です。
    num1の数値2の場合、2番目の配列には次に大きい数値がないため、-1が出力されます。


例2:

入力:nums1 = [2,4]、nums2 = [1,2,3,4]。
出力:[3、-1]
説明:
    num1の数値2の場合、2番目の配列で次に大きい数値はい3。
    num1の数値4の場合、2番目の配列には次に大きい数値がないため、-1が出力されます。


注:

nums1とnums2のすべての要素は一意です。
nums1およびnums2の配列サイズは1000を超えません。

ソース:LeetCode(LeetCode)
リンク:https ://leetcode-cn.com/problems/next-greater-element-i
著作権はDeduction Networkに属しています。商用転載の正式な許可書に連絡し、非商用転載の出典を明記してください。

アイデア1:ロジックに直接従います。最初にnum2に対応する数値があるかどうかを確認し、ある場合はそれ以降の値より大きい値を見つけます。それ以外の場合は-1です。

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        ans = []
        length = len(nums2)
        for n1 in nums1:
            if n1 not in nums2:
                ans.append(-1)
            else:
                t = nums2.index(n1)
                f = 0
                for i in range(t + 1, length):
                    if nums2[i] > n1:
                        ans.append(nums2[i])
                        f = 1
                        break
                if f == 0:
                    ans.append(-1)
        return ans

アイデア2:

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        ans = []
        stack = [] 
        dict1 = {}
        for n in nums2:
            if stack !=[] and n > stack[-1]:
                while stack != [] and n > stack[-1]:
                    dict1[stack[-1]] = n
                    stack.pop()
            stack.append(n)         

        for n in nums1:
            if n in dict1:
                ans.append(dict1[n])
            else:
                ans.append(-1)
        return ans

 

公開された314元の記事 ウォン称賛22 ビュー20000 +

おすすめ

転載: blog.csdn.net/qq_39451578/article/details/105090916
おすすめ