leetcode-1両数の和


カードを打つことを堅持します!
タイトル:
整数配列numsを指定 ターゲット値targetと、その配列の中でターゲット値を見つけてください. ふたつ 整数を返し、配列の下付きを返します.
入力ごとに1つの答えしか対応しないと仮定できます.しかし、この配列の同じ要素を繰り返し利用することはできません.
例:
与えられたnums=[2,7,11,15],target=9
nums[0]+nums[1]=2+7=9なので[0,1]を返します
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/two-sum 著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
主な考え方:
1、配列要素を格納するコンテナを設計する
2.ターゲットと減算を行い、コンテナに差のある値の要素があるかどうかを確認します.
3、下付き文字を記録して結果を返す
4、存在しない場合は異常エラーを提示する
リファレンスコード
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author SanYi
 * @version 1、    
 *
 */
public class Test1 {

	public static void main(String[] args) {
		//     
		int[] current = { 2, 7, 23, 13 };
		//    
		int target = 30;
		//     
		int[] result = FindTwoSum(current, target);

		System.out.println("[" + result[0] + "," + result[1] + "]");
	}

	/**
	 * @author SanYi
	 * 
	 * @param nums
	 *                
	 * @param target
	 *               
	 * @return int[]                
	 * 
	 * */
	public static int[] FindTwoSum(int[] nums, int target) {
		//       
		Map map = new HashMap<>();
		//       
		for (int i = 0; i < nums.length; i++) {
			//       
			int tmp = target - nums[i];
			//           
			if (map.containsKey(tmp)) {
				//      
				return new int[] { map.get(tmp), i };
			}
			//    ,   
			map.put(nums[i], i);
		}
		//        
		throw new IllegalArgumentException("        " + target + "   ");
	}
}

まとめ:
この問題はやはり簡単だ.主に、異なる値とプロシージャデータの格納を検索します.