LoginSignup
0
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-06-22

はじめに

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

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

問題

今回解いたのは,難易度easyから 問題35のSearch Insert Position です.
問題としては,整数でソートされた入力配列numsと,入力値targetが与えられたとき,targetの入る位置(順番,インデックス)を返すというもの.

入力例と出力例は以下の通りです.

Example 1:

Input: nums = [1,3,5,6], target = 5
Output: 2

Example 2:

Input: nums = [1,3,5,6], target = 2
Output: 1

Example 3:

Input: nums = [1,3,5,6], target = 7
Output: 4

Example 4:

Input: nums = [1,3,5,6], target = 0
Output: 0

Example 5:

Input: nums = [1], target = 0
Output: 0

書いたコード

繰り返しの処理を用いて解いてみました.整数でソートされた入力配列numsの先頭要素から順番に,入力値targetとの大きさを比較していきます.nums[i]target以上の値の場合,そのインデックスであるiを返します.そして,最後まで条件に当てはまらなかった場合はnumsのどの値よりも大きいとして,リストの配列数を返すことで,実質的にリストの最後のインデックスを返します.なお,今回の問題では,numsがあらかじめソートされているので,このようにシンプルな計算で記述できています.

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        for i in range(len(nums)):
            if nums[i] >= target:
                return i
        return len(nums)

ほかにも,Pythonの議論でとてもわかりやすいコードを見つけたので紹介します.
それが以下のコードで,numstargetが存在すれば,nums内のtargetの値におけるインデックスを,存在しなければ,numstargetを追加し,ソートした後のインデックスを返すというものです.やっていることがとても簡潔でわかりやすく,Pythonを深く理解していなければこのコードは書けないなと,見つけたときに感動しました.

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        if target in nums:
            return nums.index(target)
        else:
            nums.append(target)
            nums.sort()
            return nums.index(target)

おわりに

言語を深く理解することこそが,わかりやすく読みやすいコードを書けることに繋がるのだと感じました.さらにさらに練習を重ねて,言語理解を深めたいと思います.

今回書いたコードは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