投稿

8月, 2020の投稿を表示しています

ゼロから始めるLeetCode 目次

概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 リンク集 この記事をストックしておくと新しい記事の追加時に通知されます。 コードだけ見たい方はこちらの Github をご覧ください。 番号はLeetCodeの問題へのリンク、問題のリンクは解説記事についてのリンクです。 間違えているリンク等あればコメント頂けると幸いです。 Day 番号 問題 難易度 1 1389 Create Target Array in the Given Order Easy 2 1108 Defanging an IP Address Easy 3 1313 Decompress Run-Length Encoded List Easy 4 938 Range Sum of BST Easy 5 1266 Minimum Time Visiting All Points Easy 6 1342 Number of Steps to Reduce a Number to Zero Easy 7 104 Maximum Depth of Binary Tree Easy 8 1302 Deepest Leaves Sum Medium 9 701 Insert into a Binary Search Tree Medium 10 1431 Kids...

ゼロから始めるLeetCode Day110「1535. Find the Winner of an Array Game」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day109「213. House Robber II」 次回 ゼロから始めるLeetCode Day111「682.Baseball Game」 Twitter やってます。 問題 1535. Find the Winner of an Array Game 難易度はMedium。 久しぶりに問題集以外から解きました。 問題としては、整数の入った配列 arr と,整数 k が与えられている。 配列の最初の2つの要素(すなわち arr[0] と arr[1] )の間でゲームが行われます。ゲームの各ラウンドでは, arr[0] と arr[1] を比較し、大きい方の整数が勝ち、0 の位置にとどまり、小さい方の整数は配列の末尾に移動します。ゲームは、ある整数が k 回のラウンドに連続して勝利したときに終了します。 ゲームに勝つ整数を返します。 なお、ゲームの勝者が存在することが保証されています。 Example 1: Input: arr = [2,1,3,5,4,6,7], k = 2 Output: 5 Explanation: Let’s see the rounds of the game: Round | arr | winner ...

ゼロから始めるLeetCode Day109「213. House Robber II」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day108「300. Longest Increasing Subsequence」 次回 ゼロから始めるLeetCode Day110「1535. Find the Winner of an Array Game」 Twitter やってます。 問題 213. House Robber II 難易度はMedium。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、あなたは街中の家々を襲っているプロの強盗です。それぞれの家には一定の金額のお金が隠されています。この場所にある全ての家は円を描くように配置されています。つまり、最初の家は最後の家の隣人です。一方、隣の家にはセキュリティシステムが接続されており、同じ夜に隣の家に侵入された場合、自動的に警察に連絡してくれる。 各家の金額を表す非負の整数のリストが与えられたとき,警察に通報せずに今夜奪える最大金額を決定する、というものです。 Example 1: Input: [2,3,2] Output: 3 Explanation: You cannot rob house 1 (money = 2) and then rob house 3 (money = 2), beca...

ゼロから始めるLeetCode Day108「300. Longest Increasing Subsequence」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day107「98. Validate Binary Search Tree」 次回 ゼロから始めるLeetCode Day109「213. House Robber II」 Twitter やってます。 問題 300. Longest Increasing Subsequence 難易度はMedium。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、整列されていない整数の配列が与えられたとき、最も長く増加する部分列の長さを求めなさい、というものです。 Example: Input: [10,9,2,5,3,7,101,18] Output: 4 Explanation: The longest increasing subsequence is [2,3,7,101] , therefore the length is 4 . 解法 class Solution : def lengthOfLIS ( self , nums : List [ int ] ) - > int : if not nums : return 0 ...

ゼロから始めるLeetCode Day107「98. Validate Binary Search Tree」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day106「209. Minimum Size Subarray Sum」 次回 ゼロから始めるLeetCode Day108「300. Longest Increasing Subsequence」 Twitter やってます。 問題 98. Validate Binary Search Tree 難易度はMedium。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、二分木が与えられた場合,それが有効な二分探索木(Binary Search Tree)であるかどうかを判断してください、というものです。 なお、二分探索木は以下のように定義されているとします。 ノードの左の木には、そのノードの値よりも小さい値を持つノードのみが含まれます。 ノードの右の木には、そのノードの値よりも大きい値を持つノードのみが含まれます。 左の木と右の木の両方が二分探索木でなければなりません。 解法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # ...

ITエンジニアがUdemyとCourseraに入門した結果

UdemyとCourseraについて それぞれの紹介 Udemy Coursera まとめ UdemyとCourseraについて 技術に詳しい人が作った(大体の場合)動画形式の有料のコースを買い、自分のペースで講義を受けるというもの。 修了時には一応証明書が貰えるので、LinkedInとかに載っけることも可能。 ITエンジニアがこれらを受講する目的としては、技術力を高めたい時やキャリアアップのために特定の技術について興味があるという時な気がする。 なお、どれくらい効果があるかは謎。 この記事で紹介するのは僕が受講したことのあるプラットフォームとコースについてです。 それぞれの紹介 今回紹介するのはタイトル通り以下の二つ。 Udemy Coursera それぞれの印象としては、 Udemy 買切り制。 何も知らずにページを見ると10000円超えのコースばかりでたっか!!となるかもしれないが、何かにつけてセールをやっているのでその時に買いましょう。大体のコースが2000円しないくらいで買えるので、興味があるコースはセールの時にまとめて買うべき。 講義の全体的な質としては、個人が投稿しているものが多いためか、そこまで高くはない印象です。 また、厳密な試験がほとんどない為、習熟度を試験形式で測りたいという人には物足りないです。 ただ、最近流行っているのか分からないですが、日本人の投稿が他のサイトに比べてかなり多いため、英語アレルギーの方にはオススメできます。 講義のレベルとしても、あくまで入門レベルが多いため、発展的な内容を学びたい!という人よりは、新しい技術を学びたい人にオススメしたいサイトです。 ちなみに英語がある程度出来る方に限るのですが、海外でトップクラスの評価を受けているコースはかなり信頼できます。 個人的に受講したコースは以下の通り。 Build Responsive Real World Websites with HTML5 and CSS3 The Complete JavaScript Course 2020: Build Real Projects! 2020 Complete Python Bootcamp: From Zero to Hero in Python Ja...

ゼロから始めるLeetCode Day106「209. Minimum Size Subarray Sum」

概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day105「111. Minimum Depth of Binary Tree」 次回 ゼロから始めるLeetCode Day107「98. Validate Binary Search Tree」 Twitter やってます。 問題 209. Minimum Size Subarray Sum 難易度はMedium。 コーディング面接対策のために解きたいLeetCode 60問 からの抜粋です。 問題としては、 n 個の正の整数の配列 nums と正の整数 s が与えられたとき、連続する nums の和が s を超える部分配列の最小の長さを求めなさい、というものです。 なお、仮にそのような部分配列が存在しない場合は 0 を返してください。 解法 class Solution : def minSubArrayLen ( self , s : int , nums : List [ int ] ) - > int : index , num , low = 0 , 0 , float ( "inf" ) for i in range ( len ( nums ) ) : ...