PHPでleetCodeのeasyレベル100問ノック
by
Tomoya-Suzuki
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PHPでleetCodeのeasyレ ベル100問ノック @yamotuki 鈴木智也
Slide 2
Slide 2 text
自己紹介 ● 4年ちょっとインフラ 転職⬇ ● 「M&Aクラウド」という八丁堀のベンチャーでエンジニア ● 現職: バックエンドエンジニア 1年半。PHP書くぞ! ● 転職直後は・・・・
Slide 3
Slide 3 text
なんも分からん! ● PHPわからん! ロジック書くのめっちゃ苦労する! ● そんな時期・・・ ○ GAFAではコーディング面接するらしい ○ 世界で戦うにはアルゴリズムは絶対に必要な素養っぽい ● という噂
Slide 4
Slide 4 text
じゃあ勉強するぞ! ● leetCode というコーディング面接の過去問を集めたサイト ○ https://leetcode.com/
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
PHPでできるぞ ● テンション上がってきた! ● まずは100問やるぞ!
Slide 7
Slide 7 text
やってみた 8割くらいPHPで実装
Slide 8
Slide 8 text
何が役に立ったか?(今日のアジェンダ) 4点話します 1. 読み書きが楽に 2. 他言語も触れる。Golang, JS, Python など 3. テストファーストが身に付く 4. なんとなくの速度感覚がつく
Slide 9
Slide 9 text
1. 読み書きが楽に ● 当初の目的達成 ● ロジックを書くのがちょっと楽に ● 可読性低いコードも少し楽に読めるように
Slide 10
Slide 10 text
2. 他の言語も触れる ● PHPと比較して他の言語も実装 ● Golang, JavaScript, Python とかちょっとだけ触った
Slide 11
Slide 11 text
3. テストファーストが多少身に付く ● 思わぬ恩恵 ● LeetCodeのコードの試し実行が遅い ● PHPStormでテストファースト ● テスト通ってロジックに納得したら提出
Slide 12
Slide 12 text
4. なんとなくの実行速度感覚がつく ● なんとなくレベル ● 経験的に、重そうな関数がわかってくる ● 同じ処理するならこっちの方法が軽いぞ、みたいなパターンも
Slide 13
Slide 13 text
【小ネタ】 in_array() 遅い話 [‘banana’, ‘banana’, ‘banana’, ‘banana’, ‘banana’, ‘banana’, ‘apple’] から ‘apple’ があるか判定 in_array() 使うのが楽そう?
Slide 14
Slide 14 text
in_array() はやや遅い ● 言語の内部ではforで1要素ずつみて一致したらtrueなので重い ● 以下は速度測定コード n=10000でループ10000回 0.2秒
Slide 15
Slide 15 text
array_flip() しておいて isset() する方が早い ● 同じ配列で0.003秒で終わる。66倍早い!(当然毎回flipしたら遅いけど)
Slide 16
Slide 16 text
なんでisset()でチェック早い? ● array_flip() すると配列は以下のようになる ● [‘banana’ => 9999, ‘apple’=> 10000] ● 検索対象がハッシュマップのキーになるので、O(1)で判定可能 ●
Slide 17
Slide 17 text
終わりに ● パズルゲームだと思うと楽しい ● 突然難しいのを始めると辛いので、簡単なのから着実に まとめ(再掲) 1. 読み書きが楽に 2. 他言語も触れる。Golang, JS, Python など 3. テストファーストが身に付く 4. なんとなくの速度感覚がつく