Python では、0 から始まるインデックスを持つ配列 nums が提供されます。配列のサイズは n で、負でない整数で構成されます。

  1. 配列に対して操作を実行する

0 から始まるインデックスを持つ配列 nums が与えられます。配列のサイズは n で、負でない整数で構成されます。

配列に対して n - 1 のステップを実行する必要があります。ここで、i 番目のステップ (0 から数えて) では、nums の i 番目の要素に対して次の命令を実行する必要があります。

nums[i] == nums[i + 1] の場合、nums[i] の値は元の値の 2 倍になり、nums[i + 1] の値は 0 になります。それ以外の場合は、この手順をスキップしてください。
すべての操作が実行された後、すべての 0 を配列の末尾に移動します。

たとえば、配列 [1,0,2,0,0,1] は、すべての 0 を末尾に移動すると [1,2,1,0,0,0] になります。
結果の配列を返します。

操作は一度に実行するのではなく、順番に実行する必要があることに注意してください。

例 1:

入力: nums = [1,2,2,1,1,0]
出力: [1,4,2,0,0,0]
説明: 次の操作を実行します。

  • i = 0: nums[0] と nums[1] は等しくないため、この手順をスキップします。
  • i = 1: nums[1] と nums[2] が等しく、nums[1] の値は元の値の 2 倍になり、>nums[2] の値は 0 になります。配列は[1,4,0​​,1,1,0]になります。
  • i = 2: nums[2] と nums[3] は等しくないため、このステップをスキップします。
  • i = 3: nums[3] と nums[4] は等しく、nums[3] の値は元の値の 2 倍になり、>nums[4] の値は 0 になります。配列は[1,4,0​​,2,0,0]になります。
  • i = 4: nums[4] と nums[5] は等しく、nums[4] の値は元の値の 2 倍になり、>nums[5] の値は 0 になります。配列は[1,4,0​​,2,0,0]になります。
    すべての操作が実行された後、すべての 0 が配列の末尾に移動され、結果の配列 [1,4,2,0,0,0] が得られます。

例 2:

入力: nums = [0,1]
出力: [1,0]
説明: 何もできません。0 を最後に移動するだけです。

ヒント:

2 <= nums.length <= 2000
0 <= nums[i] <= 1000

実行結果のスクリーンショット

ここに画像の説明を挿入します

私のPythonの答え

class Solution(object):
    def applyOperations(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        # 遍历列表执行指定操作
        nums = [1,2,2,1,1,0]
        for i in range(len(nums)-1):
            if nums[i] != nums[i+1]:
                continue
            nums[i] = nums[i]*2
            nums[i+1] = 0
        # 去掉元素为0的
        a = [i for i in nums if i]
        # 元素不为0的加上元素0列表并返回          
        return a+[0 for i in range(len(nums) - len(a))]

Supongo que te gusta

Origin blog.csdn.net/gixome/article/details/131044143
Recomendado
Clasificación