面试题 & 快速找出数组中两个数字,相加等于某特定值的 四种实现方式

本文介绍了在Java面试中常见的一个问题:如何快速找出数组中两个数字,使得它们的和等于特定值。文章详细阐述了四种不同的实现方法,并通过测试案例展示了每种方法的正确性。这四种方法包括使用Map集合、排序后的双指针等策略,对于寻找符合条件的数字对提供了多种思路。
摘要由CSDN通过智能技术生成

JAVA基础面试题:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值。假设数组中的都是各不相等的整数。

这道题看起来很简单,但往往在面试中许多人一下子答不出来。

下面四种实现方式使用相对巧妙的方法来实现上述算法,供参考 。

方法一

1、拿目标值减去循环中的某个数组的元素值。

2、如果元素符合条件,就将下标放入到Map集合中。

public static  Map<Integer,Integer> method1(int[] nums, int sum){
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
     for(int i=0;i<nums.length-1;i++){
         for(int j=i+1;j<nums.length;j++){
             if(nums[j]== sum - nums[i]){
                 map.put(i,j);
             }
         }
     }
     return map;
}

测试:

int[] nums={54,51,99,81,1,30,70};
int sum = 100;

Map<Integer,Integer> maps1 = method1(nums,sum);
for(Map.Entry<Integer,Integer> entry:maps1.entrySet()){
    System.out.println(nums[entry.getKey()]+&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值