「アルゴリズム」グラフィックの参照(BFS/DFS)


ダブルポインタ


配列された特定の領域を連続的に処理するアルゴリズムです.
配列内の連続したデータセグメントで処理するか、並べ替えられた2つの配列が問題条件下である場合は、2ポインタアルゴリズムを疑う必要があります.

🧐 アルゴリズム#アルゴリズム#

  • 始点(start)と終点(end)を最初の要素のインデックス(0)に向けます.
  • の現在の部分和がMに等しい場合、カウントが行われる.
  • の現在の部分とM以下の場合、endは1増加する.
  • の現在の部分とMより大きい場合、startは1増加する.
  • は、すべての状況が決定されるまで、
  • のプロセスを繰り返す.

    👨‍💻 ソース

    import java.util.*;
    
    public class TwoPointer {
      
      public static void main(String[] args){
        
        int[] arr = {1, 2, 3, 2, 5};
        
        int count = 0;
        
        int end = 0;
        int sum = 0;
        
        for(int start = 0 ; start < arr.length ; start++) {
          
          while(sum < 5 && end < arr.length) {
            sum += arr[end];
            end += 1;
          }
          
          if(sum == 5) {
            count++;
          }
          
          sum -= arr[start];
        }
        
        System.out.println(count);
        
      }
    }
    
    
    

    🏅 関連資料