Menu
CoddyTech

Next Greater Element I

相異なる整数からなる2つの配列 nums1 と nums2 が与えられます。nums1 の各値は nums2 にも含まれています。値 x の次に大きい要素とは、nums2 で x より右にある値のうち、x より大きい最初の値です。そのような値がない場合は -1 とします。

nums1 の各値に対する次に大きい要素を、nums1 の順序で格納した配列を返してください。

関数

nextGreaterElement(nums1: integer-array, nums2: integer-array) → integer-array
nums1integer-array
答えとなる値は、すべてnums2にあります
nums2integer-array
各値の右側を調べる配列
戻り値integer-array
nums1 の各値に対する次に大きい要素、または -1 を、nums1 の順序で

制約

  • 1 ≤ nums1.length ≤ nums2.length ≤ 104
  • 0 ≤ nums1[i], nums2[i] ≤ 104
  • nums1 のすべての値は互いに異なり、nums2 のすべての値も互いに異なります。
  • nums1 のすべての値は nums2 に含まれています。

例

入力
nums1 = [3, 8, 1]nums2 = [1, 6, 3, 8, 2]
出力
[8, -1, 6]
説明
nums2 の 3 の後には 8 と 2 が続き、3 より大きい最初の値は 8 です。8 の後に続くのは 2 だけなので、8 には -1 が割り当てられます。1 のすぐ後の値は 6 で、これはすでにより大きい値です。

lock icon提出時に隠しテスト+14件

challenge icon

発展問題

nums2の各位置について、同じ1回の走査で、その次に大きい要素が右側に何ステップ離れているかを返せますか?

コードをリセット
def nextGreaterElement(nums1, nums2):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

nums1 = [3, 8, 1]
nums2 = [1, 6, 3, 8, 2]

期待値

[8, -1, 6]