求两数之和

要求:

给定一个整数数组 和一个整数目标值 ,在该数组中找出和为目标值 的那两个整数,并返回它们的数组下标
假设给定数组 nums[]= [1,2,3,4,6] 目标值target= 8

做法:

①使用嵌套的for循环语句来做

/**遍历情况
*	外层 0		1
*	内层 1 1++	2 2++  不能大于数组长度
*	每一次遍历都将数组中下标对应的两个数相加,如果符合就返回,不符合就继续遍历
*/
for(int i=0;i<nums.length;i++){
    for(int j=i+1;j<nums.length;j++){
        if(nums[i]+nums[j]==target){
            return new int[]{i,j};
        }
    }
}

②使用for循环+map.containsKey()方法

/**
*  每遍历数组的一个数,就用目标值减去这个数获得的值作为key,
*  再用containsKey来比较看map中有没有这个key
*  如果不存在这个key,那么就以这个下标对应的数组值为k,下标为v放进map
*  如果存在,那么就返回当前下标,还有通过这个key获取到的值
*/
Map<Integer,Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
   if(map.containsKey(target-nums[i])){
       return new int[]{map.get(target-nums[i]),i};
   }
   map.put(nums[i],i);
   //使用map的另一个方式,差别不大
   //if(map.containsKey(nums[i])){
       //return new int[]{map.get(nums[i]),i};
   //}
   //map.put(target-nums[i],i);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jz_Stu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值