天天看點

1.Two Sum題目解題思路代碼運作結果

題目

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9

Output: index1=1, index2=2

解題思路

1. 使用暴力求解。時間複雜度O(n^2),空間複雜度O(1)。

2. 使用hash表存儲通路過的數。時間複雜度O(n),空間複雜度O(n)。(√)

代碼

int[] twoSum(int[] nums, int target ){
		
		HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
		int[] index=new int[2];

		for(int i=0;;i++){
			if(hm.containsKey(target-nums[i])){
				index[0] = hm.get(target-nums[i])+1;
				index[1] = i+1;
				break;
			}
			else{
				hm.put(nums[i],i);
			}
		}
		
		return index;	
	}
           

運作結果

1.Two Sum題目解題思路代碼運作結果