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による顔の改造の一般的な手法の詳細な説明

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

ブログ    

推薦する

...

機械学習のケーススタディ: クレジットカード詐欺検出

私は51CTOアカデミー講師の唐玉迪です。51CTOアカデミーの「4.20 ITリチャージフェスティ...

データ構造とアルゴリズム: K 回の否定後の配列の合計を最大化する

[[435915]] K回の反転後の配列の最大合計LeetCode の問題へのリンク: https:...

人工知能が税務業界を変える7つの方法

[[313080]]政府は、医療、輸送、防衛、国家安全保障など、多くの分野で AI とロボット工学を...

ついに!ファーウェイの次世代カメラはカメラには見えない

最近、セキュリティ業界で2つの大きな出来事が起こりました。大手証券会社にとって、これはブラックマンデ...

機械学習におけるモデルのバイアスを理解する

人工知能 (AI) と機械学習 (ML) の分野では、意思決定プロセスに予測モデルを組み込むことがま...

アリババAIはダブル11ショッピングフェスティバルの衣料品工場で運用され、欠陥認識の精度は人間を上回った。

AI がダブル 11 の生産と製造をスピードアップします。 10月29日、記者は、アリババのAIア...

ZTouch、AIを活用して広告効果を高めるデジタル広告プラットフォーム「Darwin」をリリース

2021年5月20日、北京中良プロトンネットワーク情報技術有限公司傘下の企業向けデジタルサービスプラ...

超大型モデルの登場でAIはゲームオーバーになるのか?ゲイリー・マーカス:道は狭くなっている

最近、人工知能技術は大規模モデルにおいて飛躍的な進歩を遂げています。昨日、Google が提案した ...

画像も感情を伝えることができるのでしょうか?ロチェスター大学のチームが新しいコンピュータービジョンのタスクを提案

画像スタイルの転送?声の感情移入?いいえ、それはイメージの感情的な伝達です。コンピュータビジョンの分...

人工知能による雇用促進

[[347833]]近年、人工知能は急速に発展し、新たな科学技術革命と産業変革を主導する中核的な原動...

...

ワシントンポスト紙の李開復氏のコラム:お金を与えることでAI失業危機は解決するのか?シリコンバレーの大物は世間知らずすぎる

AI革命が到来し、それは最良の時代になるかもしれないし、最悪の時代になるかもしれない。それが良いこと...

ドローンは電力網を守り、点検や障害物の除去も可能!

[[412066]]現在、全国的に気温が上昇し続けているため、私の国では電力消費のピークの新たな波...

ビッグデータと人工知能がオンラインゲームをどう変えるのか

2017 年に成熟したと言われる 2 つの技術的進歩があるとすれば、それは間違いなく仮想現実と人工知...