配列から和がゼロになる3つの要素の組み合わせを求めるアルゴリズム
問題概要
整数配列 numbers が与えられたとき、異なる3つの要素 numbers[i] + numbers[j] + numbers[k] == 0 を満たすすべての一意な三元組 (i, j, k) を見つけて返します。ただし、i, j, k はすべて異なるインデックスを指す必要があります。
制約条件
配列の長さ: 3 ≤ numbers.length ≤ 3000
要素の範囲: -10⁵ ≤ numbers[i] ≤ 10⁵
実行例
入力: numbers = [-1, 0, 1, ...
8月21日 22:50 投稿
循環リンクリストの検出と入環ノード特定
循環リンクリストの検出
問題概要
リンクリストの先頭ノードheadが与えられたとき、循環構造の有無を判定する。循環構造とは、ノードのnextポインタを追跡することで再訪問可能なノードが存在する状態を指す。循環が存在しない場合はfalseを返す。
入力例
例1: head = [3,2,0,-4], pos=1 → true
例2: head = [1,2], pos=0 → true
例3: head = [1], pos=-1 → false
解法: ...
7月22日 22:34 投稿
小白月赛47 解説と実装
A. ボール詰めゲーム
円柱に詰め込めるボールの体積を求める。円柱の体積は πr²h、各ボールの体積は 4/3 πr³。高さ h の中に収まるボール数は ⌊h/(2r)⌋ 個なので、答えは
πr²h − ⌊h/(2r)⌋ · 4/3 πr³
である。計算量は O(1)。
#include <bits/stdc++.h>
using namespace std;
const double PI = 3.14159265358979323846;
int main() {
ios::sync_with_stdio(fals ...
7月14日 22:37 投稿
文字列操作:単語の反転と文字列の回転
151. 文字列内の単語を反転する
この問題は、これまでに学んだ文字列操作の多くの要素をカバーしています。解法の理解だけでなく、コードの実装も重要です。
主な難点は余分なスペースの削除で、これは双方向ポインタを使用して実現します。具体的には、新しい配列の位置を指すスローポインタがあり、ファストポインタが追加すべき要素を見つけた場合、スローポインタの現 ...
5月24日 08:24 投稿