SV Eng さん プロフィール

  •  
SV Engさん: シリコンバレー・エンジニアへの道
ハンドル名SV Eng さん
ブログタイトルシリコンバレー・エンジニアへの道
ブログURLhttps://sv-eng.blogspot.com/
サイト紹介文シリコンバレーの IT 企業でエンジニアとして就職するために有用な情報を配信します。
自由文アメリカ西海岸の某有名 IT 企業で働くエンジニアが、シリコンバレーで働くエンジニアの実態について語ったり、シリコンバレーでエンジニアとして就職するために必要な面接対策の方法や勉強法などの情報を配信します。
参加カテゴリー
更新頻度(1年)情報提供51回 / 109日(平均3.3回/週) - 参加 2017/08/26 02:08

SV Eng さんのブログ記事

  • 解答と解説: Fibonacci Sequences
  • 「問題演習: Fibonacci Sequences」の解答編です。Web 上でよく見かけるフィボナッチ数列のプログラムは再帰を使っています。今回は再帰を使うことができないという制約を付けて問題を出題しました。解答例Javaでの解答例です。解答例1)このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例2)このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説解答例の解説をする [続きを読む]
  • 問題演習: Fibonacci Sequences
  • 今回は「Fibonacci Sequences」という問題です。日本語で「フィボナッチ数列」というとご存知の方も多く、プログラムを作成したことがある方も多いと思います。実際に面接でフィボナッチ数列を書けという簡単な問題は出題されないと思いますが、問題を掘り下げると実はフィボナッチ数列を書けば解けるような問題があったりします。そのときのために一応解いておきましょう。また、よくあるプログラムは再帰を使う解法ですが、再帰 [続きを読む]
  • 解答と解説: Average of each Level in Binary Tree
  • 「問題演習: Average of each Level in Binary Tree」の解答編です。問題出題時に述べたように、この問題は本サイトに掲載してきた 2 分木に関する問題「Max Depth of Binary Tree」や「Find Max Element per Level in Binary Tree」と似ており、解答も非常に似ています。そのため、解答例の細かい解説はそちらの記事を見ていただきたいと思います。今回の解説では問題出題時の最後に記載した "もし数値の 1 つが int 型の最大値だ [続きを読む]
  • 問題演習: Average of each Level in Binary Tree
  • 今回は「Average of each Level in Binary Tree」という問題です。この問題はこれまでに本サイトに掲載してきた 2 分木に関する問題「Max Depth of Binary Tree」や「Find Max Element per Level in Binary Tree」と似ているので掲載するか迷ったのですが、1 点だけ注意してほしいことがあったので掲載することにしました。その注意して欲しい点は下記の「解答を見る前に」に記載したので考えてみてください。難易度は「Easy」です [続きを読む]
  • 解答と解説: Symmetric Binary Tree
  • 「問題演習: Symmetric Binary Tree」の解答編です。今回は再帰を用いた解答例と深さ優先探索を用いた解答例の 2 つを用意しました。解答例Javaでの解答例です。解答例1)再帰このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例2)深さ優先探索このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説この問題では両端の枝を根から葉まで下降する際に、枝上の各ノードを [続きを読む]
  • 問題演習: Symmetric Binary Tree
  • 今回は「Symmetric Binary Tree」という問題です。Symmetric とは左右対称のことです。難易度は「Easy」です。問題与えられた 2 分木が左右対称か判定しなさい。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。入出力例この 2 分木は左右対称です。 1 / 2 2 / / 3 4 4 3しかし、次の 2 分木は左右対称ではありません。 1 / [続きを読む]
  • 解答と解説: Longest Palindrome
  • 「問題演習: Longest Palindrome」の解答編です。今回は直感的で分かりやすい解法と少し最適化を施した解法の 2 種類の解答を用意しました。解答例Javaでの解答例です。解答例1) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例2) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説回文は中央の文字以外は左右対称になります。そのため、最長の回文を作るに [続きを読む]
  • 問題演習: Longest Palindrome
  • 今回は「Longest Palindrome」という問題です。難易度は「Easy」です。Palindrome とは回文のことです。前後のどちらから読んでも同じように読める文です。問題与えられた文字列から作ることができる回文の最長の長さを求めよ。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。入出力例"abbccdde" から作ることができる最長の回文は "bcdadcb" や "cbdedbc" など [続きを読む]
  • 解答と解説: Hamming Weight
  • 「問題演習: Hamming Weight」の解答編です。模範解答に加え、Java が提供している便利なメソッドを使った解答を用意しました。解答例Javaでの解答例です。解答例1) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例2) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説模範解答である解答例1について解説する前に、解答例2の解法について簡単に述べます。 [続きを読む]
  • 問題演習: Hamming Weight
  • 今回は「Hamming Weight」という問題です。日本語ではハミング重みです。以前出題し Hamming Distance と類似の問題ですが、ビット演算のおさらいも兼ねて挑戦しましょう。難易度は「Easy」です。問題与えられた正の整数のハミング重みを返せ。ハミング重みとは整数を 2 進数で表したとき、符号が 1 となるビットの数である。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧し [続きを読む]
  • 解答と解説: Add Binary Strings
  • 「問題演習: Add Binary Strings」の解答編です。この問題のポイントとしては、文字列で表記された 2 進数を最下位のビットから計算する際に桁上げ処理を忘れずに行うことです。それでは解答例を見ていきましょう。解答例Javaでの解答例です。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説7 行目で count という int 型の変数を用意しています。この変数は与えられた 2 つの 2 進数を走査すると [続きを読む]
  • 問題演習: Add Binary Strings
  • 今回は「Add Binary Strings」という問題です。難易度は「Easy」です。問題2 つの 2 進数が文字列で与えられる。これらの和を 2 進数の文字列で返せ。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。入出力例"1" と "11" が与えられたとき "100" を返す。また、"101" と "111" が与えられたとき "1100" を返す。それでは、解答と解説は次の投稿で。 [続きを読む]
  • 解答と解説: Reverse Digits of Integer
  • 「問題演習: Reverse Digits of Integer」の解答編です。今回の解答では 2 つのポイントがありますので、それらを中心に解説します。解答例Javaでの解答例です。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説問題出題時に入出力例として 12345 が与えられた場合は 54321 を返し、-12345 が与えられた場合は -54321 を返す必要があることを示しました。この例から分かることは、与えられた整数の [続きを読む]
  • 問題演習: Reverse Digits of Integer
  • 今回は「Reverse Digits of Integer」という問題です。難易度は「Easy」です。問題与えられた整数の桁を反転せよ。ただし、負数も考慮し、反転後の整数が int 型に入らない場合は 0 を返せ。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。入出力例例えば、12345 が与えられた場合は 54321 を返す。-12345 が与えられた場合は -54321 を返す。それでは、解答と解 [続きを読む]
  • 解答と解説: Identical Binary Trees
  • 「問題演習: Identical Binary Trees」の解答編です。再帰と深さ優先探索を用いた解答例を示します。解答例Javaでの解答例です。解答例1) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例2) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説解答例1は再帰を使い、解答例2は深さ優先探索を使った解法です。解答例1の再帰を使った解法では、現在のノード n [続きを読む]
  • 問題演習: Identical Binary Trees
  • 今回は「Identical Binary Trees」という問題です。難易度は「Easy」です。問題2 つの二分木が同一か判定せよ。ただし、木が同一であるとは木の形が同じであり、各ノードが保持する値も同じことである。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。入出力例木の根ノードが 2 つ与えられます。2 つの木が同一なら true を返し、同一でない場合は false を返し [続きを読む]
  • 解答と解説: Reverse a String
  • 「問題演習: Reverse a String」の解答編です。解答例を複数載せました。面接で思いついて欲しいのは解答例3ですが、解答例1から順に見ていきましょう。解答例Javaでの解答例です。解答例1)このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例2)このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例3)このプログラムはJavaScriptで読み込みます。Webブラウザ [続きを読む]
  • 問題演習: Reverse a String
  • 今回は「Reverse a String」という問題です。難易度は「Easy」です。非常に単純な問題なので、多くの方が解けると思います。その分、ミスが命取りになるので注意しましょう。問題与えられた文字列を反転せよ。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。入出力例"apple" が与えられた場合、"elppa" を返せ。それでは、解答と解説は次の投稿で。 [続きを読む]
  • 解答と解説: Reverse a Singly Linked List
  • 「問題演習: Reverse a Singly Linked List」の解答編です。この問題は単方向リストを逆順に並び替えるという一見すると単純に見える問題ですが、空間計算量を O(1) で処理しなくてはならない点が難易度を上げています。念のため空間計算量 O(1) という制約について確認しておきましょう。空間計算量 O(1) を換言すると、メモリの使用量は入力に依存することなく、一定でなくてはならないということです。参考までに言及しておくと [続きを読む]
  • 問題演習: Reverse a Singly Linked List
  • 今回は「Reverse a Singly Linked List」という問題です。シンプルな問題ですが思考過程で混乱しやすい問題です。難易度は「Medium」です。問題単方向リストを逆順にし、返還後のリストの先頭のノードを返せ。ただし、空間計算量は O(1) であること。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。入出力例リストの要素が [1, 2, 3] のとき [3, 2, 1] とし、3 [続きを読む]
  • 解答と解説: No Adjacent Neighbors
  • 「問題演習: No Adjacent Neighbors」の解答編です。解答例Javaでの解答例です。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説解答例では配列 bs を先頭から順に調べる際、前後と自身が false のときに自身に true を格納しています。true を格納した数だけ count をインクリメントし、配列をすべて調べた後に count の数が整数 n より大きければ、少なくとも n 個の true を置くことができると [続きを読む]
  • 問題演習: No Adjacent Neighbors
  • 今回は「No Adjacent Neighbors」という問題です。難易度は「Easy」です。問題1 つの boolean 型の配列 a と 1 つの整数 n が与えられる。配列にはいくつかの true と false が既に格納されており、あと n 個の true を格納できるか調べたい。ただし true の隣には false しか置けない。あと n 個の true を格納できるとき true を返し、格納できないときは false を返せ。この問題は家や花壇を用いるとイメージしやすいと思いま [続きを読む]
  • 解答と解説: Isomorphic Strings
  • 「問題演習: Isomorphic Strings」の解答編です。今回の解答例には、比較的すぐに思いつきそうなものと、簡単な制約がある場合に思いつきたい解答を載せました。解答例Javaでの解答例です。解答例1) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解答例2) このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説この問題は 2 つの文字列に含まれる各文字が 1 対 1 に [続きを読む]
  • 問題演習: Isomorphic Strings
  • 今回は「Isomorphic Strings」という問題です。この問題も非常に有名な問題です。皆に知られすぎている問題なので、面接には出てこないかもしれません。難易度は「Easy」です。問題2 つの文字列が与えられる。片方の文字列に含まれる文字が、もう一方に含まれる文字列に 1 対 1 にマッピングできるか調べよ。ただし、与えられる 2 つの文字列の長さは等しい。解答テンプレートJavaの例を示します。このプログラムはJavaScriptで読 [続きを読む]
  • 解答と解説: Lowest Common Ancestor in Binary Search Tree
  • 「問題演習: Lowest Common Ancestor in Binary Search Tree」の解答編です。この問題は単なる二分木ではなく、二分探索木であることに注目する必要があります。それらの違いについては解説で述べたいと思います。解答例Javaでの解答例です。このプログラムはJavaScriptで読み込みます。Webブラウザで閲覧してください。解説単なる二分技は子要素が最大 2 つに別れている木です。二分探索木は二分技が持つ特徴に加え、左の子要素は [続きを読む]