剑指offer——和为s的两个数字

这道题很明显用HashMap来做,HashMap主要要把key和Value定好,不要弄混,因为在HashMap中,key和value都是Integer类型,所以可以将key和value的意义写下来,在用时不会弄混,注意HashMap h虽然没有getKey和getValue的用法,但有containsKey和containsValue的用法,代码如下

import java.util.ArrayList;
import java.util.HashMap;
public class Solution {
	 public static ArrayList FindNumbersWithSum(int [] array,int sum) {
	        HashMap h=new HashMap();
	        ArrayList ai=new ArrayList();
	        for(int i=0;i

发现还有一种方法,时间和空间复杂度都能降低:双指针法,代码如下

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Arrays;
public class Solution {
	 public static ArrayList FindNumbersWithSum(int [] array,int sum) {
         Arrays.sort(array);
         int i=0,j=array.length-1;
         ArrayList ai=new ArrayList();
         while(isum)
                 j--;
         }
         return ai;
     }
}

 

你可能感兴趣的:(剑指offer——和为s的两个数字)