スキップしてメイン コンテンツに移動

ゼロから始める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 With the Greatest Number of Candies Easy
11 1315 Sum of Nodes with Even-Valued Grandparent Medium
12 617 Merge Two Binary Trees Easy
13 338 Counting Bits Medium
14 136 Single Number Easy
15 283 Move Zeroes Easy
16 344 Reverse String Easy
17 169 Majority Element Easy
18 53 Maximum Subarray Easy
19 121 Best Time to Buy and Sell Stock Easy
20 134 Gas Station Medium
21 448 Find All Numbers Disappeared in an Array Easy
22 141 Linked List Cycle Easy
23 226 Invert Binary Tree Easy
24 21 Merge Two Sorted Lists Easy
25 70 Climbing Stairs Easy
26 94 Binary Tree Inorder Traversal Easy
27 101 Symmetric Tree Easy
28 198 House Robber Easy
29 46 Permutations Medium
30 234 Palindrome Linked List Easy
31 581 Shortest Unsorted Continuous Subarray Easy
32 437 Path Sum III Easy
33 1 Two Sum Easy
34 118 Pascal’s Triangle Easy
35 160 Intersection of Two Linked Lists Easy
36 155 Min Stack Easy
37 105 Construct Binary Tree from Preorder and Inorder Traversal Medium
38 208 Implement Trie (Prefix Tree) Medium
39 494 Target Sum Medium
40 114 Flatten Binary Tree to Linked List Medium
41 394 Decode String Medium
42 2 Add Two Numbers Medium
43 5 Longest Palindromic Substring Medium
44 543 Diameter of Binary Tree Easy
45 1379 Find a Corresponding Node of a Binary Tree in a Clone of That Tree Medium
46 406 Queue Reconstruction by Height Medium
47 14 Longest Common Prefix Easy
48 26 Remove Duplicates from Sorted Array Easy
49 1323 Maximum 69 Number Easy
50 739 Daily Temperatures Medium
51 647 Palindromic Substrings Medium
52 1351 Count Negative Numbers in a Sorted Matrix」 Medium
53 1365 How Many Numbers Are Smaller Than the Current Number Easy
54 1290 Convert Binary Number in a Linked List to Integer Easy
55 22 Generate Parentheses Medium
56 1480 Running Sum of 1d Array Easy
57 35 Search Insert Position Easy
58 20 Valid Parentheses Easy
59 1221 Split a String in Balanced Strings Easy
60 1481 Least Number of Unique Integers after K Removals Medium
61 7 Reverse Integer Easy
62 83 Remove Duplicates from Sorted List Easy
63 195 Tenth Line Easy
64 287 Find the Duplicate Number Medium
65 560 Subarray Sum Equals K) Medium
66 438 Find All Anagrams in a String Medium
67 1486 XOR Operation in an Array Easy
68 709 To Lower Case Easy
69 279 Perfect Squares Medium
70 295 Find Median from Data Stream Hard
71 1496 Path Crossing Easy
72 1498 Number of Subsequences That Satisfy the Given Sum Condition Medium
73 1491 Average Salary Excluding the Minimum and Maximum Salary Easy
74 12 Integer to Roman Medium
75 15 3Sum Medium
76 3 Longest Substring Without Repeating Characters Medium
77 1502 Can Make Arithmetic Progression From Sequence Easy
78 206 Reverse Linked List Easy
79 1282 Group the People Given the Group Size They Belong To Medium
80 703 Kth Largest Element in a Stream Easy
81 347 Top K Frequent Elements Medium
82 392 Is Subsequence Easy
83 102 Binary Tree Level Order Traversal Medium
84 142 Linked List Cycle Ⅱ Medium
85 6 ZigZag Conversion Medium
86 33 Search in Rotated Sorted Array Medium
87 1512 Number of Good Pairs Easy
88 139 Word Break Medium
89 62 Unique Paths Medium
90 1011 Capacity To Ship Packages Within D Days Medium
91 153 Find Minimum in Rotated Sorted Array Medium
92 4 Median of Two Sorted Arrays Hard
93 49 Group Anagrams Medium
94 929 Unique Email Addresses Easy
95 82 Remove Duplicates from Sorted List II Medium
96 78 Subsets Medium
97 349 Intersection of Two Arrays Easy
98 39 Combination Sum Medium
99 112 Path Sum Easy
100 108 Convert Sorted Array to Binary Search Tree Easy
101 387 First Unique Character in a String Easy
102 322 Coin Change Medium
103 12 Best Time to Buy and Sell Stock II Easy
104 103 Binary Tree Zigzag Level Order Traversal Medium
105 111 Minimum Depth of Binary Tree Easy
106 209 Minimum Size Subarray Sum Medium
107 98 Validate Binary Search Tree Medium
108 300 Longest Increasing Subsequence Medium
109 213 House Robber II Medium
110 1535 Find the Winner of an Array Game Medium

コメント

  1. A really appreciable post thanks for sharing this content by the way If anyone look for Ms Office training institute in Delhi Contact Here-+91-9311002620 Or Visit our website https://www.htsindia.com/Courses/microsoft-courses/ms-office-course

    返信削除

コメントを投稿

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

Braveブラウザを使い始めて結構経った 設定 1 .同期ページを開く 2.QRコードの表示 3.iPhoneで読み取る Braveブラウザを使い始めて結構経った Google Domainsで独自ドメインを持っているBloggerをBrave Creatorsに登録した話。 この記事を書いた頃から僕はBraveしか使わなくなっちゃいましたね〜。 広告がないとネットサーフィンが捗りますし、Braveの直接クリエイターに貢献できるような仕組みが特に気に入っています。Blogger,ひいてはGoogle的にどうなんだって話もありそうですけど、ただのユーザなのでそんなのは気にせず便利なものは使います。 それで本題です。 タイトルのように今回同期機能を設定しました。 余計なことをしていたせいで少しハマったので設定ついでに誰かが困ったときに役に立つように設定方法を残しておこうかと思います。 ちなみにこちらの記事はPCの同期にiPhoneを追加するという設定方法についての解説です。iPhone→PCの同期方法などはまた別の話のようです。 設定 1 .同期ページを開く ブラウザのタブの右上にある上矢印のマークをクリックすると以下のような項目が表示されます。 こちらの同期という欄をクリックします。 すると以下のページが表示されます。 自動的に設定ページの中の同期欄が表示されるわけですね。 2.QRコードの表示 同期欄に同期済みのデバイスを管理という欄があるのでそちらをクリックします。 すると以下のようなページが表示されるのでそちらの中の新たなデバイスを追加、スマホ/タブレットという順にクリックしていくとQRコードが表示されます。 これでこのステップは完了です。 3.iPhoneで読み取る このQRコードをiPhoneで読み取っていく訳ですが、このQRコードはプリインストールされているQRコードで読み取っても正しく処理してくれません。 書いてある通り、iPhoneのBraveブラウザで読み取って上げる必要があります。 なのでひとまずiPhoneでBraveブラウザを開き、画面右下の**•••**という所をタップしてください。 すると上から二番目に歯車アイコンの設定が表示されますのでそちらをタップします。 初期表示で画面中部に表示さ

JavaのindexOf関数はナイーブ法で実装されているらしい

indexOf関数とは 実際のソースを見よう ナイーブ法ってなんぞや indexOf関数とは ドキュメント はここ。 indexOf の細かい使い方は説明はしないが、簡単にいうと二つの文字列を比較して重複する箇所がある場合にその開始部分のインデックスを返すというもの。 実際のソースを見よう どのように実装されているのかが気になったので jdkの中に存在するsrc.zipを解凍して確認してみることに。 public int indexOf ( String str ) { return indexOf ( str , 0 ) ; } public int indexOf ( String str , int fromIndex ) { return indexOf ( value , 0 , value . length , str . value , 0 , str . value . length , fromIndex ) ; } static int indexOf ( char [ ] source , int sourceOffset , int sourceCount , char [ ] target , int targetOffset , int targetCount , int fromIndex ) { if ( fromIndex >= sourceCount ) { return ( targetCount == 0 ? sourceCount : - 1 ) ; } if ( fromIndex < 0 ) { fromIndex = 0 ; } if ( targetCount == 0 ) { return fromIndex ; } char

failed: unable to get local issuer certificate (_ssl.c:1123)と出たので解決した話

Webスクレイピングとか 試していたらこれが突然出た。 macOS用公式インストーラーのPython 3.6でCERTIFICATE_VERIFY_FAILEDとなる問題 という記事に解決策が書いてあったが、 python.orgで配布されているmacOS用の公式インストーラーでインストールしたPython 3.6を使い、 urllib.request.urlopen() で https:// のWebページを取得しようとすると、以下のエラーが発生します。 で、このタイトルのエラーに当たっていたよう。 私の場合はPython3.8.5を使っていたので $ /Applications/Python\ 3.8/Install\ Certificates.command というコマンドをターミナルで叩くことで事なきをえた。 読んでないのが悪いとはいえこれはハマる人が多いんじゃなかろうか。