[LeetCode] 180. 連続した数字少なくとも 3 回連続して出現するすべての数字を検索する SQL クエリを記述します。
たとえば、上記の Logs テーブルでは、少なくとも 3 回連続して出現する数字は 1 だけです。 この問題では、Logs テーブルが提供され、Num 列に同じ数字が 3 回連続して出現する数字を見つけるように求められます。同じ数字を 3 回見つける必要があるため、3 つのテーブル インスタンスを作成する必要があります。l1 を使用して、それぞれ l2 および l3 と交差し、l1 の次の位置と l2 の Id を比較し、l1 と l3 の次の 2 つの位置を比較して、同じ Num を持つ数字を返します。 解決策1: SELECT DISTINCT l1.Num FROM Logs l1 JOIN ログ l2 ON l1.Id = l2.Id - 1 JOIN ログ l3 ON l1.Id = l3.Id - 2 ここで、l1.Num = l2.Num かつ l2.Num = l3.Num; 次のメソッドは Join を使用せず、3 つのテーブルのインスタンス内を直接検索し、4 つの条件を制限して正しい結果を返します。 解決策2: Logs l1、Logs l2、Logs l3 から DISTINCT l1.Num を選択 ここで、l1.Id = l2.Id - 1 かつ l2.Id = l3.Id - 1 かつ、l1.Num = l2.Num かつ、l2.Num = l3.Num; まったく異なる方法を見てみましょう。変数 count と pre が使用され、それぞれ 0 と -1 に初期化されます。次に、IF 文が使用されていることに注意してください。MySQL の IF 文は、私たちがよく知っている他の言語の if 文とは異なります。これは、おなじみの三項演算子 a?b:c に相当します。a が true の場合は b を返し、そうでない場合は c を返します。それでは、まず Num 列の最初の数字 1 を見てみましょう。pre は現在の Num とは異なる -1 に初期化されているため、この時点で count には 1 が割り当てられ、この時点で pre には 1 が割り当てられます。次に、Num 列の 2 番目の 1 が入り、この時点で pre は Num と同じです。count は 1 増加します。Num 列の 3 番目の 1 が入ると、count は 3 に増加します。この時点で、where 条件が満たされ、tn >= 3 であるため、1 が選択されます。このようにして、Num 全体を走査して最終結果を取得します。 解決策3: SELECT DISTINCT 数値 FROM ( SELECT Num, @count := IF(@pre = Num, @count + 1, 1) AS n, @pre := Num ログから、(SELECT @count := 0, @pre := -1) AS init ) AS t ここで tn >= 3; 参考文献: https://leetcode.com/discuss/54463/シンプルソリューション https://leetcode.com/discuss/87854/simple-sql-with-join-1484-ms https://leetcode.com/discuss/69767/two-solutions-inner-join-and-two-variables これで、LeetCode (180. 連続数) の SQL 実装に関するこの記事は終了です。 連続数の SQL 実装に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)
目次Dockerコンテナのソースコードを使用してhttpdをデプロイし、ストレージボリュームを使用し...
Linux はオープン システムです。インターネット上には、既成のプログラムやツールが多数存在します...
目次解決: 1. 無視する2. 交換する3. 重複キーの更新についてデータを挿入するときに、重複した...
1. DOM要素を挿入、更新、または削除するときに、適切な場合は要素にスタイルクラス名を追加します。...
tomcat の web.xml を構成する場合、サーブレットは比較的重要な問題です。ここでは、サー...
目次トピック分析する基本的な解決策基本的な再帰再帰最適化要約するトピック私たちが答えなければならない...
目次背景コンテナを固定し、数字を上にスクロールすることで、スクロールホイールと同様の効果を実現します...
私は長い間落ち込んでいます、なぜでしょうか?以前、お客様から、提供されたソフトウェアが正常に動作しな...
プロセス分析の実装(1)繰り返して電話をかけるには?答え: 関数をカプセル化して一度だけ呼び出すコー...
Dockerのインストール手順をスキップする1. postgresqlイメージを取得する docke...
目次必要回避策1. ツールチップを設定する2. hookToolTip変数を定義する3. メソッド内...
Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...
目次効果テキストの作成を開始するまずフォントローダーを作成するフォントライブラリを読み込むテキストジ...
仮想化ソフトウェアをインストールする仮想マシンにオペレーティング システムをインストールする前に、ホ...
今回は、 RNの起動処理を整理しました。最後のstartReactApplication比較的複雑で...