代码实现
package com.zhm.eurekaclient.config.test; import org.apache.catalina.LifecycleState; import org.bouncycastle.jcajce.provider.digest.MD2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 〈一句话功能简述〉<br> * 〈〉 * * @author zhaohaiming * @create 2020/10/2 * @since 1.0.0 */ public class Test_03 { public static void main(String[] args) { int[] array = {10,4,6,2,8}; int target =6; int[] list = getNumber02(array,target); System.out.println("第一个下标:"+list[0]+" 第二下标:"+list[1]); } /** * 方法功能描述:求一个数组中任意两个相加为目标数 target 时间复杂间为n^2 * * @author zhaohaiming * @date 2020/10/4 9:18 * @return *@since: 1.0.0 */ public static ArrayList getNumber (int [] arry , int target){ if(arry.length == 0) return null; ArrayList list = new ArrayList(); int cur = 0; int length = arry.length -1; for(int index = 0 ; index < arry.length; index ++){ cur = index ; int tempInde = index ; while ( tempInde < length){ if(arry[cur]+ arry[tempInde] == target){ list.add(cur); list.add(tempInde); return list; } tempInde ++; } } return list; } /** * 方法功能描述: 求一个数组中任意两个相加为目标数 target 时间复杂间为n * * @author zhaohaiming * @date 2020/10/4 9:20 * @return *@since: 1.0.0 */ public static int[] getNumber02 (int [] arry , int target){ int [] result = {-1,-1}; if(arry.length == 0) return result; Map map = new HashMap<>(); //第一步:把数组的元素存入在map集合中 for(int index = 0 ; index < arry.length; index ++){ map.put(arry[index],index); } //第二步:遍历数组的元素与目标数相差得到twoNumber值 for(int i = 0 ; i < arry.length; i++){ int twoNumber = target - arry[i]; //第三步:判断twoNumber值是否在map集合中 if(map.containsKey(twoNumber) && target != twoNumber*2){ result[0] = i; result[1] = (int)map.get(twoNumber); return result; } } return result; } }