编程题

原创
2015/12/31 10:21
阅读数 200

1. 求两个数的和

给定一个整型数组,从中挑选两个数字,使其相加为一个为一个给定的值,返回这两个值所有数组中位置下标,位置下标小的在前面,位置下标从1开始。

例如:

输入:nums= {2,7,11,13}  target=24

import java.util.Arrays;
import java.util.HashMap;

public class Count {
	public static void main(String[] args) {
		int[] array=new int[]{2,7,11,13,18,19,40,60,100};
		int count=160;
		int[] result=getIndexs(array, count);
		if(null!=result){
			System.out.println(Arrays.toString(result));
		}
		
		result=getIndexsAdv(array, count);
		if(null!=result){
			System.out.println(Arrays.toString(result));
		}
	}
	
	public static int[] getIndexs(int[] array,int count){
		int[] result=new int[2];
		int itCount=0;
		for(int i=0;i<array.length;i++){
			for(int j=i+1;j<array.length;j++){
				itCount++;
				if(j<array.length){
					if((array[i]+array[j])==count){
						result[0]=i;
						result[1]=j;
						System.out.println("遍历次数"+itCount);
						return result;
					}
				}
			}
		}
		return  null;
	}
	
	public static int[] getIndexsAdv(int[] array,int count){
		int[] result=new int[2];
		int itCount=0;
		HashMap<Integer, Integer> maps=new HashMap<>();
		for(int i=0;i<array.length;i++){
			maps.put(array[i], i);
		}
		
		for(int i=0;i<array.length;i++){
			itCount++;
			int b=count-array[i];
			Integer index=maps.get(b);
			if(null!=index){
				System.out.println("adv 遍历次数"+itCount);
				result[0]=i;
				result[1]=index;
				return result;
			}
		}
		return null;
	}
}


展开阅读全文
加载中

作者的其它热门文章

打赏
0
3 收藏
分享
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部