0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【LeetCode】就活に向けたコーディングテスト対策 #14

Last updated at Posted at 2021-06-26

#はじめに
こんばんは.
M1就活生がLeetCodeから,easy問題を中心にPythonを用いて解いていきます.

↓では,解いた問題のまとめを随時更新しています.
まとめ記事

#問題
今回解いたのは,難易度easyから 問題66のPlus One です.
問題としては,整数を表す10進数が1桁ずつ入った配列digitsが与えられたとき,その数字を 1 増やすというもの.例えば,digits = [9]であれば,Outputは[1, 0]というふうに位上がりが発生します.
入力例と出力例は以下の通りです.

Example 1:

Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

Example 3:

Input: digits = [0]
Output: [1]

#書いたコード
書いたコードが以下になります.

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        string_digits = ''.join(map(str, digits))
        plusone_string_digits = str(int(string_digits) + 1)
        return list(map(int, plusone_string_digits))

まず,入力配列digitsjoin()メソッドを使います.数値のリストを連結する場合,join()ではエラーとなるため,map()で文字列に変換してから連結させます.リスト内包表記を使っても同様の処理を記述できます.

>>> digits = [1, 2, 3]
>>> string_digits = ''.join(digits)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found

>>> string_digits = ''.join(map(str, digits))
>>> string_digits
'123'

>>> string_digits = ''.join([str(n) for n in digits])
>>> string_digits
'123'

文字列として連結した後,整数型で+1を計算し,それを再度リストとして返しました.
Pythonでは,list()を使うと,文字列を1文字ずつリストに変換することができます.join()同様,数値ではエラーとなります.map()を使うか,リスト内包表記を使って数値に変換することで,うまくリストに変換することができます.

>>> string_digits = '123'
>>> plusone_digits = list(string_digits)
>>> plusone_digits
['1', '2', '3']

>>> plusone_digits = list(int(string_digits))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

>>> plusone_digits = list(map(int,string_digits))
>>> plusone_digits
[1, 2, 3]

>>> plusone_digits = list([int(n) for n in string_digits])
>>> plusone_digits
[1, 2, 3]

#おわりに
Pythonを使うと,簡単に解くことができますが,メソッドや仕様を深く理解できるので勉強になります.しかし,アルゴリズム力を高めるためには,組み込み関数やメソッドに頼らずに解くべきですね笑

今回書いたコードはGitHubにもあげておきます.

前回 次回

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?