NinaLabo

個人ゲーム開発者の技術メモ

【StudyReport】 2021年7月

自分がどこに向かうべきか定まらないのですが、とりあえず興味のあるものから少しずつインプットを増やすようにしています。

 

書籍

Pythonでのアルゴリズムの解き方サンプルとしてざっと目を通しました。コード1行1行に解説があってわかりやすいものの、個人的にはちょっと説明が冗長な感じもしました。

 

大量の問題は後回しにしてとりあえず文章だけざっと読みました。ビックオー記法の説明が詳しくて良かったです。他の本だとなかなかきちんと説明している箇所がなかったので理解が深まりました。例題を解いてみると意外と簡単なようで難しい...対数がどうも苦手です... 

 

 Pythonを勉強しはじめたので、せっかくだしと思って機械学習の入門書っぽいものも買ってみました。2章のscikit-learnまで読みましたが、主にライブラリの使い方という感じでざっと目を通す程度で良さそうです。

LeetCode

Easyを10問ちょっとぐらい解きました。もっとがっつりやろうと思っていたのですが、1問1問結構時間も頭も使うので疲れちゃって大量にできなかったです...

https://leetcode.com/problemset/all/

# タイトル   備考
1 1. Two Sum Easy

二重ループだと\displaystyle O(n^2)だがHashを使えば\displaystyle O(n)で解ける。事前にHashを作らず、ループ内で値が見つからなければHashに追加していく。Premiumだが動画がわかりやすい

2

121. Best Time to Buy and Sell Stock

Easy \displaystyle O(n^2)ではなく2つの変数を使って\displaystyle O(n)で解く
3 953. Verifying an Alien Dictionary  Easy 単純な文字列比較問題
4 20. Valid Parentheses Easy 括弧の対応関係が正しいかをスタックで解く
5 53. Maximum Subarray Easy

全パターン検索だと\displaystyle O(n^2)だが、動的計画法(DP)のKadane's Algorithm (カデインと読むらしい)を使えば\displaystyle O(n)で解ける。下記の動画がわかりやすい。

https://www.youtube.com/watch?v=86CQq3pKSUw

また、少し遅くなるが分割統治法(divide-and-conquer)を使えば\displaystyle O(nlogn)で解ける

6 415. Add Strings  Easy 桁をそれぞれUnicode差分で数字にして足していくだけ。ただそれでも初見だと一瞬戸惑う
7 7. Reverse Integer Easy 10の余りで桁を取り出すのと前の数字にx10して桁を足すのを同じループ内でやると\displaystyle O(logn)で解ける
8 176. Second Highest Salary Easy 急にSQLの問題でびっくりした。こんなのもあるのか...Maxより小さいものの中でMaxを取れば2番目の値が取れる
9 125. Valid Palindrome Easy 回文か判定する問題。外側から内側に向かって比較していけばいいだけ
10 680. Valid Palindrome II Easy 回答がない問題でどこまでやればいいのかちょっと微妙
11 696. Count Binary Substrings Easy

英語の読解力のなさも相まって問題がわかりにくい。動画を見てようやく理解できた

https://www.youtube.com/watch?v=MGPHPadxhtQ