LeetCode 203: リンクリストから指定された値を持つノードを削除する

問題 この問題では、リンクリストの先頭ノード head と整数 val が与えられます。リンクリストから Node.val == val を満たす全てのノードを削除し、新しい先頭ノードを返します。 例1: 入力: head = [1,2,6,3,4,5,6], val = 6 出力: [1,2,3,4,5] 例2: 入力: head = [], val = 1 出力: [] 例3: 入力: head = [7,7,7,7], val = 7 出力: [] 制約: リスト内の ...

5月23日 02:08 投稿

文字列の回転・k個のソート済みリストのマージ・スキー問題の解法

109: 文字列の回転 問題リンク: 文字列回転問題 解法: class StringRotator { public: bool checkRotation(string str1, string str2) { int len = str1.length(); if (len != str2.length()) return false; for (int i = 0; i < len; i++) { if (str1[i] == str2[0]) { int idx1 = i, idx2 = 0; ...

5月22日 17:57 投稿

LeetCode 49題 - 文字列のアナグラムグループ化(Java実装)

文字列49 49. 文字列のアナグラムグループ化 問題記述 文字列の配列が与えられるので、アナグラムを同じグループにまとめなさい。結果のリストは任意の順序で返して構いません。 アナグラムとは、元の単語のすべての文字を並び替えて作られる新しい単語のことです。 例1: 入力: strs = ["eat", "tea", "tan", "ate", "nat&qu ...

5月21日 04:03 投稿

ハッシュテーブルの実装とアルゴリズム応用:基礎から競技プログラミング問題への適用まで

ハッシュテーブルの仕組みと実装 基本構造の構築 ハッシュ値の生成手法は一旦置き、ハッシュ値が外部から与えられる前提でハッシュテーブルの骨組みを実装する。内部では配列と連結リストを用いてキーと値のペアを管理する。 public class CustomHashMap { static class Node { int code; Object key; Object val; Node next; ...

5月20日 12:47 投稿

挿入ソートの原理と実装

挿入ソート(Insertion Sort)は、配列を部分的に整列させながら全体をソートしていくアルゴリズムである。既に整列された部分に対して、次の要素を適切な位置に挿入することで、徐々に整列範囲を広げていく。 アルゴリズムの流れ 最初の要素を「整列済み」とみなす。 次の要素を取り出し、整列済み部分の末尾から先頭に向かって比較を行う。 取り出した要素が比較 ...

5月19日 20:41 投稿

LeetCode 2960: テスト済みデバイスのカウント問題

長さn、0から始まるインデックスを持つ整数配列batteryPercentagesが与えられ、これはn個のデバイスのバッテリー百分比を表します。 あなたのタスクは、各デバイスiを順番にテストし、以下のテスト操作を実行することです: もしbatteryPercentages[i]が0より大きい場合: テスト済みデバイスのカウントを増やす。 インデックスが[i + 1, n - 1]のすべてのデバイスのバッテ ...

5月19日 14:13 投稿

LeetCode解説:216.組合せ総和IIIと17.電話番号の文字列組み合わせ [バックトラッキング編]

LeetCode 216.組合せ総和III 問題リンク:216.組合せ総和III 問題説明 1から9までの数字からk個の数字を選び、その合計がnとなるすべての有効な組み合わせを見つけます。以下の条件を満たす必要があります: 使用できる数字は1から9まで 各数字は最大で1回まで使用可能 結果には重複する組み合わせを含めない 例1: 入力:k = 3, n = 7 出力: [[1,2,4]] 説明: 1 + 2 + ...

5月18日 15:03 投稿

循環配列における次の大きな要素の検出と「雨水を貯める」問題のアルゴリズム解説

503. 循環配列における次の大きな要素 II (Next Greater Element II) 循環配列(最後の要素の次が最初の要素となる配列)が与えられた場合、各要素に対して「次に大きい要素」を見つける問題です。要素xの次に大きい要素とは、配列を巡回順で走査した際、xの後に現れる最初のxより大きな数値を指します。そのような数値が存在しない場合は-1を出力します。 解法アプロー ...

5月16日 17:53 投稿

滑動窓最大値と上位K頻度要素のアルゴリズム実装

LeetCode 239. スライディングウィンドウ最大値 問題リンク:239. スライディングウィンドウ最大値 - LeetCode ​アプローチ: ウィンドウの左端が常に最大値となるように維持し、popleft操作で自動的に最大値を取得できるようにする。 # Pythonで双端キューを使用した実装 class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: ...

5月16日 02:53 投稿

【データ構造とアルゴリズム】(24)高度なデータ構造とアルゴリズム設計:二つのポインタを用いた問題の解法と実装例

4.6 Leetcodeにおける二つのポインタ手法 以下の問題はすべて二つのポインタを用いるものであり、加えて以下のケースも含まれる: Leetcode3: 最長の重複しない部分文字列(ハッシュテーブルの章で扱った) ホーソーのクイックソート 二分探索 など ゼロの移動 - Leetcode 283 public class ZeroMoveLeetcode283 { static void moveZeros(int[] nums) { int ...

5月15日 22:47 投稿