この記事はWeChatの公開アカウント「3分でフロントエンドを学ぶ」から転載したもので、著者はsisterAnです。この記事を転載する場合は、「3分で学ぶフロントエンド」公式アカウントまでご連絡ください。 負でない整数を含む配列が与えられた場合、三角形の 3 辺を形成できる 3 つ組の数を数えることがタスクです。 例1:
知らせ:
解決策: ソート + ダブルポインタ三角形のどの2辺の合計も3番目の辺より大きく、どの2辺の差も3番目の辺より小さいことがわかっています。3辺の長さを小さい方から順にa、b、cとすると、これらの3辺はa + b > cの場合にのみ三角形を形成できます。 解決策: 最初に配列をソートし、次に最長のエッジを固定し、ダブル ポインター メソッドを使用して残りのエッジを決定します。 nums[nums.length - 1]を最長辺nums[k]とする(k = nums.length - 1) nums[i]を最短辺とし、nums[nums.length - 2]を2番目の数nums[j](j = nums.length - 2)とする。 nums[i] + nums[j]がnums[k]より大きいかどうかを判定します。
そして、ji に三角形を形成できる三つ組の数が追加され、j が一つ前の位置 (j--) に移動し、次のラウンドの判定が続行されます。
コード実装:
複雑性分析:
知らせ: Array.prototype.sort() に関しては、ES 仕様では特定のアルゴリズムは指定されていません。バージョン 7.0 より前の V8 エンジンでは、配列の長さが 10 未満の場合、Array.prototype.sort() は挿入ソートを使用し、それ以外の場合はクイックソートを使用します。 クイックソートは安定したソートアルゴリズムではないため、V8 エンジンバージョン 7.0 以降では廃止されました。最悪の場合、時間計算量は O(n2) に低下します。 代わりに、ハイブリッド ソート アルゴリズムである TimSort が使用されます。 この機能アルゴリズムは、もともと Python 言語で使用されていました。厳密に言えば、上記の 10 個のソート アルゴリズムのいずれにも属さず、ハイブリッド ソート アルゴリズムです。 データ量の少ないサブ配列では挿入ソートを使用し、次にマージソートを使用して順序付けられたサブ配列をマージしてソートします。時間の計算量は O(nlogn) です。 リートコード: https://leetcode-cn.com/problems/valid-triangle-number/solution/teng-xun-leetcode611you-xiao-san-jiao-xing-de-ge-s/ |
<<: すべてのビジネスデータを使用しても、AI に完全に入力することはできませんか?この小さなサンプル学習キットをお試しください
>>: 科学者たちは人間のように「考える」ことができる人工知能を開発している
[[327915]] 【51CTO.com クイック翻訳】データ サイエンティストとして、私たちは...
業界の専門家が AI と自動化のベストプラクティスについて議論し、企業がこれらの重要な新興テクノロジ...
IT Homeは11月7日、マイクロソフトがInworld AIと協力し、開発者がAIベースのキャ...
[[412609]]画像ソース: https://pixabay.com/images/id-648...
今日のロボットは、次のようなさまざまな形やサイズのものがあります。こんなのもあります:一見奇妙に見え...
チャット中に数学者テレンス・タオ氏にインスピレーションを与えたGPT-4は、最近、ロボットにペンを回...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
[[270666]] [51CTO.com クイック翻訳] 昨今、クラウドコンピューティング、ブロ...
サプライ チェーンは、生産におけるあらゆるリンクの源です。原材料から製造、流通まで、各ステップで最も...
オープンソース フレームワークの分野では、PyTorch と TensorFlow の間で常に議論が...