普歌-毅雁チーム-二数の和(この二数の和は普通ではない)


要件:
整数配列numsと整数目標値targetを指定すると、その配列に目標値の2つの整数が見つかり、配列の下付きを返します.
分析:
ハッシュ検索、遍歴配列nums,iは現在の下付きであり、各値はmapにtarget-nums[i]のkey値が存在するか否かを判断し、存在する場合は2つの値が見つかり、存在しない場合は現在(nums[i],i)をmapに格納し、遍歴が見つかるまで継続する.
実装:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;


public class Solution {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = 0;//      

    int[] nums = new int[10];//  nums    

    int target = 0;//    target  

    System.out.println("   nums     ");

    n = sc.nextInt();

    System.out.println("   nums  ");

    for (int i = 0; i <= n - 1; i++) {
        nums[i] = sc.nextInt();
    }

    System.out.println("     target  ");

    target = sc.nextInt();

    int[] ints = twoSum(nums, target);

    System.out.println("   "+Arrays.toString(ints));
}

public static int[] twoSum(int[] nums, int target) {
    Map codeMap = new HashMap(nums.length - 1);//         Mao  
    for (int i = 0; i <= nums.length; i++) {
        if (codeMap.containsKey(target - nums[i])) {//   target-nums[i]  key 
            return new int[]{codeMap.get(target - nums[i]), i};//   
        }
        codeMap.put(nums[i], i);//   ,   
    }
    throw new IllegalArgumentException("No  two  sum  solution");
}
}

実行結果:
  • 結果1:
       nums     
    4
       nums  
    2
    7
    11
    15
         target  
    9
       [0, 1]
    
  • 結果2:
       nums     
    3
       nums  
    3
    2
    4
         target  
    6
       [1, 2] 
    
  • あなたの読書に感謝します.足りないところは批判を歓迎します.