ByteDance アルゴリズムの面接の質問、解けますか?

ByteDance アルゴリズムの面接の質問、解けますか?

数日前、私の友人がByteDanceの面接を受けました。面接官は彼にリンクリストアルゴリズムの質問をしましたが、彼はすぐには理解できなかったので私に尋ねました。この質問はかなりいいと思うので、それについて話します。

[[275586]]

01 タイトル

これは実際には変形されたリンクリストの反転問題であり、大まかに次のように説明できます。

単一リンクリストのヘッドノードが与えられた場合、リストを調整して K 個のノードすべてが逆順にグループ化されるようにする関数を実装します。リンクリストの末尾から始めて、ヘッドに残っているノードの数がグループを形成するのに十分でない場合は、順序を逆にする必要はありません。 (キューやスタックを補助として使用することはできません)。

例えば:

  • リンクリスト: 1->2->3->4->5->6->7->8->null、K = 3。すると、6->7->8、3->4->5、1->2 はそれぞれグループになります。調整後:1->2->5->4->3->8->7->6->null。このうち、1と2は1グループに足りないため調整しません。

02 回答

この問題の難しさは、リンク リストの先頭からではなく末尾から開始することです。先頭であれば、リンク リストをトラバースして、k 回のトラバースごとにグループに分割し、順序を逆にすることができるため、比較的簡単に実行できます。しかし、これは最後とは異なります。なぜなら、これは単方向リンク リストであり、逆方向にトラバースして最初からやり直すことができないからです。ただし、この問題は再帰を使用すると間違いなく簡単に解決できます。

まずは同じような逆の質問をしてみましょう。

この問題を解く前に、先頭から始める場合に何をすべきかを見てみましょう。例: リンク リスト: 1->2->3->4->5->6->7->8->null、K = 3。調整後:3->2->1->6->5->4->7->8->null。このうち、7と8は1グループに足りないため調整されません。

この問題を解決するには再帰を使用することができます。reverseKNode() メソッドの機能は、単方向リンク リスト内の K 個のノードの順序を (先頭から) 逆にすることであると仮定します。reverse() メソッドの機能は、単方向リンク リストを逆にすることです。

したがって、次の単一リンクリストの場合、K = 3 になります。

最初の K 個のノードを次のノードから分離します。

temp が指す残りのリンク リストは、元の問題のサブ問題であると言えます。 temp が指すリンク リスト内の K 個のノードすべての順序を逆にするには、reverseKNode() メソッドを呼び出します。次に、reverse() メソッドを呼び出して、head が指す 3 つのノードの順序を逆にします。結果は次のようになります。

次に、これら 2 つの部分を接続するだけです。最終結果は次のとおりです。

コードは次のとおりです。

話題に戻る

これら 2 つの質問は、1 つは最初から始まり、もう 1 つは最初から始まるという点を除けば、非常によく似ていると言えます。これは、leetcode の質問 25 でもあります。面接では、質問が歪んでいることがよくあります。たとえば、ByteDance からのこの質問では、質問が最後から組み立てられており、一瞬何をすればいいのかわからないかもしれません。もちろん、誰かがすぐに反応して彼を即座に殺す可能性もあります。

実際、この問題は非常に簡単に解決できます。単方向リンク リストを 1 回反転するだけです。反転後、先頭からアセンブルするように変換できます。次に、上記の私の解決策に従ってください。処理後、結果をもう一度反転すると完了します。 2 度反転すると反転しないのと同じになります。

例えばリンクリスト(K = 3)の場合

最後から始めて、逆の順序で K 個のノードをグループ化します。手順は次のとおりです。

①まずは逆順

順序を逆にした後、先頭から始めて各 K ノードの順序をグループとして逆にするという問題に変換できます。

②処理後の結果は以下のようになります。

③ 次に結果を1回反転すると、結果は次のようになります。

コードは次のとおりです。

この問題と同様に、まず 2 つのリンク リストを逆の順序で追加する必要があります。この質問は、ByteDance の筆記試験でも出題されており、下の図の 2 番目の質問に示されています。

この問題では、まず 2 つのリンク リストを逆にし、次にノードを追加し、最後にそれらをマージする必要があります。

03 結論

リンクリストアルゴリズムの質問に関しては、面接でよくテストされると聞いているので、より注意を払うことができます。この記事が参考になったと思ったら、ぜひ高評価を付けてください。

<<:  AIによる顔の改造の一般的な手法の詳細な説明

>>:  制御可能な人工知能には未来がある

ブログ    
ブログ    
ブログ    

推薦する

海外メディア:TikTokは米国の規制当局の支援を得るためにアルゴリズムを公開する予定

米国現地時間の水曜日、人気の短編動画プラットフォーム「TikTok」(Douyinの海外版)のCEO...

初めてmAP70%を突破! GeMap: ローカル高精度マップ SOTA が再び更新されました

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

...

キングス・カレッジ・ロンドンとグラクソ・スミスクラインが人工知能技術に基づくがん研究で協力

海外メディアの報道によると、9月30日、キングス・カレッジ・ロンドンと世界的な製薬会社グラクソ・スミ...

信頼とセキュリティの分野におけるデータサイエンスの典型的な 7 つの使用例

信頼とセキュリティとは何でしょうか? 現在の世界ではどのような役割を果たしているのでしょうか? 多く...

Kuaishou AIテクノロジーがゲームチェーン全体に力を与える

導入ゲーム業界は近年急速に発展しており、2020年第1四半期だけでも中国のゲーム市場の売上高は700...

人工知能は諸刃の剣です。EUは利益を促進し、害を避けるための規制を導入しました。

近年、交通と環境に対する要求が継続的に高まっており、わが国の新エネルギー自動車は急速な発展を遂げてい...

AIとコネクテッドデバイスの急成長が新たなデジタル格差を生み出している理由

接続デバイスと AI 言語モデルの急速な成長により、私たちの生活、仕事、コミュニケーションの方法が変...

NASAのジェット推進研究所が人工知能に取り組んでいる様子をご覧ください

[51CTO.com クイック翻訳] ジェット推進研究所 (JPL) では、同僚がインテリジェントな...

...

人工知能チュートリアル(IV):確率論入門

このシリーズの前回の記事では、行列と線形代数についてさらに詳しく説明し、JupyterLab を使用...

App Store 中国、検索アルゴリズムを最適化:名前による検索を復活

約1週間の不安が去った後、国内のiOSアプリ開発者はようやく落ち着くことができた。中国におけるApp...