编程题

本文介绍了一种寻找数组中两个数相加等于特定目标值的算法实现。通过两种不同的方法,一种是双层循环遍历,另一种是使用哈希表优化查找过程,实现了返回这两个数的下标的功能。

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;
	}
}


转载于:https://my.oschina.net/fengcunhan/blog/593876

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值