めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

Leetcodeを進める(8)

Problem24

https://leetcode.com/problems/swap-nodes-in-pairs/

偶数番目と奇数番目をスワップしたリストを返す。

You may not modify the values in the list's nodes, only nodes itself may be changed.

とのことなのでリストのvalを書き換えてはいけない。

copy --- 浅いコピーおよび深いコピー操作 — Python 3.8.2 ドキュメント

weakref --- 弱参照 — Python 3.8.2 ドキュメント

Problem26

Remove Duplicates from Sorted Array.

in-placeでユニークな要素のみをリストに残し、リストの長さを返す問題。

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:

        i = 0
        while i < len(nums)-1:
            if nums[i]==nums[i+1]:
                del nums[i]
            else:
                i = i + 1

        return len(nums)

delで重複した要素を指定して、リストから削除する。

5. データ構造 — Python 3.8.2 ドキュメント

Problem28

部分文字列一致のアルゴリズムの実装。

www.slideshare.net

ナイーブに先頭の文字列を見つけたら、それ以降がマッチするかをチェックするようにしてとりあえず提出。両者空白の場合を考慮し忘れておりWAを出してしまった。

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        haysta_len = len(haystack)
        needle_len = len(needle)
        res = -1

        if needle_len == 0:
            return 0  # 必ず先頭で一致
        elif haysta_len == 0:
            return -1  # 必ず不一致
        else:
            first_c = needle[0]

            for i, ci in enumerate(haystack):
                if not ci==first_c:
                    continue
                elif i+needle_len>haysta_len:
                    break
                else:
                    if haystack[i:i+needle_len]==needle:
                        res = i
                        break

        return res

Runtime: 28 ms, faster than 75.04% of Python3 online submissions for Implement strStr(). Memory Usage: 13.1 MB, less than 98.46% of Python3 online submissions for Implement strStr().

ブログズミ: ASSERT_EQ(NULL, ptr) がコンパイルエラーにならない理由

Assert.IsNull Method (Microsoft.VisualStudio.TestTools.UnitTesting) | Microsoft Docs

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。