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 投稿

動的計画法による部分列問題の解法

問題1:最長増加部分列 最長増加部分列(Longest Increasing Subsequence, LIS)問題は、与えられた数列から、要素が厳密に増加する順序で並んでいる最長の部分列を見つける問題です。 class Solution { public: int lengthOfLIS(vector<int>& arr) { // 1. DPテーブルの作成 int size = arr.size(); vector<int> dp(size, 1) ...

5月15日 12:10 投稿

LeetCode問題解説:配列の美しさ値の合計計算

問題概要 2012. 配列の美しさ値の合計 0から始まる整数配列 arr が与えられます。各インデックス i(1

5月14日 20:45 投稿

動的計画法入門:基本概念と実践

動的計画法(DP)は前の状態から次の状態を導き出す手法であり、貪欲法が局所的に最適解を選択するのとは異なります。アルゴリズム学習において、この違いを理解することが重要です。 動的計画法問題を解決するため、以下の5つのステップを確実に理解する必要があります。これら全てをマスターしてこそ、動的計画法を真に理解したと言えます。 DP配列(テーブル)と添字 ...

5月14日 05:35 投稿

可変長スライディングウィンドウの実装パターンと典型問題

スライディングウィンドウの適用条件 スライディングウィンドウは、配列や文字列における連続した部分列に関する問題に有効です。特に、以下のような要件を持つ問題に適しています: 部分配列・部分文字列の最小/最大長を求める 特定の条件を満たす最短/最長の連続要素を探索する 許容誤差(例:最大k個の0を1に変換)付きでの最適解を求める 基本的な実装手順 ...

5月13日 15:34 投稿

ハッシュテーブルを活用したアルゴリズム問題の効率的な解法

ハッシュテーブルは、キーと値のペアを格納し、平均的に定数時間O(1)でデータの検索、挿入、削除を行うことができる非常に効率的なデータ構造です。ここでは、ハッシュテーブルの特性を利用して計算量を削減し、アルゴリズムのパフォーマンスを最適化する代表的な問題について解説します。 有効なアナグラムの判定 2つの文字列がアナグラム(文字の並び替え)であるかどう ...

5月11日 10:22 投稿