← キャリア

コーディングテスト

LeetCode

3263. Convert Doubly Linked List to Array I (Easy) — 2026-10-04 ✅

https://leetcode.com/problems/convert-doubly-linked-list-to-array-i/

連結リスト(Node: val/prev/next)を先頭から辿って配列に詰めるだけ。prevは使わない(飾り)。

class Solution:
    def toArray(self, root: 'Optional[Node]') -> List[int]:
        res = []
        while root:
            res.append(root.val)   # 今の箱の値
            root = root.next       # 次の箱へ移動
        return res

学び:

3173. Bitwise OR of Adjacent Elements (Easy) — 2026-10-04 ✅

https://leetcode.com/problems/bitwise-or-of-adjacent-elements/

隣同士をビットOR(|)でつないで長さn-1の配列を返す。

class Solution:
    def orArray(self, nums: List[int]) -> List[int]:
        ans = []
        for i in range(len(nums)-1):
            ans.append(nums[i] | nums[i+1])
        return ans

学び:

2011. Final Value of Variable After Performing Operations (Easy) — 2026-10-06 ✅

https://leetcode.com/problems/final-value-of-variable-after-performing-operations/

X=0から操作文字列を順に適用して最終値を返す。++X/X++は+1、--X/X--は-1。

class Solution:
    def finalValueAfterOperations(self, operations: list[str]) -> int:
        ans = 0
        for o in operations:
            if "+" in o:
                ans += 1
            else:
                ans -= 1
        return ans

学び:

3190. Find Minimum Operations to Make All Elements Divisible by Three (Easy) — 2026-10-06 ❌→理解

https://leetcode.com/problems/find-minimum-operations-to-make-all-elements-divisible-by-three/

±1操作で全要素を3の倍数にする最小回数。自力では解けなかった(whileの条件を逆にしてしまった)。

正解:

class Solution:
    def minimumOperations(self, nums: List[int]) -> int:
        return sum(1 for x in nums if x % 3 != 0)

学び:

1920. Build Array from Permutation (Easy) — 2026-10-05 ✅🔧

https://leetcode.com/problems/build-array-from-permutation/

ans[i] = nums[nums[i]](添字の二段引き)を全iで作る。nums[i]で出た値を、もう一回添字として引く。

提出した版(AC、O(n)時間・O(n)空間):

class Solution:
    def buildArray(self, nums: list[int]) -> list[int]:
        ans = []
        for x in range(len(nums)):
            ans.append(nums[nums[x]])
        return ans

学び:

3668. Restore Finishing Order (Easy) — 2026-10-05 ✅🔧

https://leetcode.com/problems/restore-finishing-order/

完走順 order から、友達 friends のIDだけを完走順で抜き出す。

提出した版(AC、ただし in friends が毎回リスト線形探索でO(n*m)):

class Solution:
    def recoverOrder(self, order: List[int], friends: List[int]) -> List[int]:
        ans = []
        for element in order:
            if element in friends:
                ans.append(element)
        return ans

改善版(friendsをsetにして所属判定O(1)):

class Solution:
    def recoverOrder(self, order: List[int], friends: List[int]) -> List[int]:
        fs = set(friends)
        return [x for x in order if x in fs]

学び:

Minimum Operations to Make Array Sum Divisible by K (Easy) — 2026-10-05 ✅

https://leetcode.com/problems/minimum-operations-to-make-array-sum-divisible-by-k/

1回の操作で要素を1減らせる。合計をkで割り切れるようにする最小操作回数。

class Solution:
    def minOperations(self, nums: List[int], k: int) -> int:
        return sum(nums) % k

学び:

3898. Find the Degree of Each Vertex (Easy) — 2026-10-05 ✅

https://leetcode.com/problems/find-the-degree-of-each-vertex/

隣接行列から各頂点の次数(つながる辺の数)を返す。各行の1の個数=その頂点の次数なので、行の合計を取るだけ。

class Solution:
    def findDegrees(self, matrix: list[list[int]]) -> list[int]:
        return [sum(row) for row in matrix]

学び:

Library Late Fee Calculator (Easy) — 2026-10-05 ✅🔧

https://leetcode.com/problems/library-late-fee-calculator/

返却遅延日数に応じた罰金の合計。1日→1、2〜5日→2倍、6日以上→3倍。

class Solution:
    def lateFee(self, daysLate: List[int]) -> int:
        ans = 0
        for d in daysLate:
            if d == 1:
                ans += 1
            elif d <= 5:
                ans += 2 * d
            else:
                ans += 3 * d
        return ans

学び: