Leetcode 1配列練習


leetcode配列練習
  • 66:plus one
  • コード部1
  • コード部2
  • 31. Next Permutation
  • 題意理解
  • コード部
  • 66:plus one
    コード部1
    class Solution:
        def plusOne(self, digits: List[int]) -> List[int]:
            l=[1]
            c=0
            if len(digits)==0:
                return digits
            cur=len(digits)-1
            while cur+1:
                if digits[cur]==9:
                    d1=digits[cur+1:]
                    digits=digits[:cur]
                    digits.append(0)
                    digits.extend(d1)
                    cur-=1
                    c=1
                else:
                    digits[cur]+=1
                    cur=-2
                    break
            if cur==0 or cur==-1:
                l.extend(digits)
                digits=l
            return digits
    

    **主な考え方:**考え方は比較的簡単で、cur位置が9であることを発見した時に長さ[:cur]及び[cur+1:]を切り取り、cur位置処置は0である.
    Runtime: 36 ms, faster than 88.65% of Python3 Memory Usage: 12.9 MB, less than 98.54%
    コード部2
            if len(digits) == 0:
                digits = [1]
            elif digits[-1] == 9:
                digits = self.plusOne(digits[:-1])
                digits.extend([0])
            else:
                digits[-1] += 1
            return digits
    

    Runtime: 36 ms, faster than 88.65% of Python3 Memory Usage: 13.2 MB, less than 57.36% of Python3
    再帰的な方法:利点:コードが簡潔できれいな欠点:空間の複雑さは少し大きくなります
    31. Next Permutation
    意味の理解
    本題の目標:listを入力し、そのlistの各数字の各種配列の組み合わせを求める場合、本listより大きい次の組み合わせの考え方:listがnums[i-1]を後ろから検索する
    コードセクション
    class Solution:
        def nextPermutation(self, nums: List[int]) -> None:
            """
            Do not return anything, modify nums in-place instead.
            """
            c=1
            for i in range(len(nums)-1,0,-1):
                if nums[i-1] < nums[i]:
                    vol=max(nums[i:])
                    cur=i
                    for j in range(i,len(nums)):
                        if nums[j]>nums[i-1] and nums[j]

    Runtime: 36 ms, faster than 97.38% of Python3
    Memory Usage: 13.1 MB, less than 78.38%
    評価:方法は難しくなく、本輪リストより大きい次の配列の組み合わせをどのように探すかを理解することに重点を置いている.