博主信息
Sky
博文
291
粉丝
0
评论
0
访问量
7209
积分:0
P豆:617

Scala 两数之和

2021年10月20日 20:42:59阅读数:16博客 / Sky

描述:

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target  的那两个整数,并返回它们的数组下标。

思路:

    1、实现一个方法,将数组元素值和其对应的index存入HashMap(原因:HashMap的查找时间复杂度为O(1));

    2、实现一个方法,输入一个数组、一个二手拍卖平台目标值,返回一个Map,Map中包含符合条件的元组

代码:

 /**
   * 将数组转换为HashMap,K-V 对应于  元素值-元素在数组中的index
   */
  def transform(nums:Array[Int]):mutable.HashMap[Int,Int] ={    val hm = new mutable.HashMap[Int,Int]()    if (nums.length ==0) hm    else {      for (n <- nums.indices){
        hm.put(nums(n),n)
      }
      hm
    }
  }  /**
   * 两数之和,输入一个数组nums、一个目标数字target; 求存在于个nums中的两个数a和b,使得 a+b =target
   * 返回值:map 其中K-V对应于 a,b在nums中的数组下标
   */
  def twoSum(nums:Array[Int],target:Int) : mutable.HashMap[Int,Int] = {    val resultMap = new mutable.HashMap[Int,Int]()    val hm = transform(nums)    //遍历数组,同时查找(target - nums(i))的值 是否出现在hm中,如果出现,则记录本次遍历结果中的i以及hm对应的index
    for (i <- nums.indices) {      if(hm.contains(target - nums(i) )){
        resultMap.put(i,hm(target - nums(i)))
      }
    }
    resultMap
  }  val nums = Array(10,3,24,6,0,9,6,43,34,2,21,20,25)
  println(twoSum(nums,23))



版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 前的文章《PHP字符串学习比较个字符串》中,我们介绍了比较个字符串的方法。字符串组都是PHP中重要的据类型,我们不仅要了解比较字符串的方法,也要了解比较组的方法。
    python输入进行求的方法:首先使用input()函接收从键盘输入的;然后使用float()函将接收的个值统一转换为浮点;接着使用“+”运算符将相加,得到一个相加值;最后使用
    前的文章《PHP循环学习八:统计1~10000的完,并输出全部完》中,我们介绍了判断给定是不是完的方法。
    本文的重点内容则是教大家如何计算个日期间的周。大家可以自己先在本地做一做,看看实现的方法是否我一样呢?
    前的文章中我们介绍了利用PHP函检查给定值是不是有限值、无限值或非值的方法。这次我们继续PHP函的学习,介绍一下计算个日期相差几天的方法,有需要的可以学习了解一下~
    主机的域名主机的ip地址间的关系是:一个IP地址对应多个域名。在Internet中,一个域名内能够对应一个IP地址,但是一个IP地址可以被多个域名所对应。
    上一篇文章中介绍了比较组获取相同元素(交集)的方法,感兴趣可以点击查阅→《PHP组学习如何比较组求交集》。既然可以求交集,那也可以求差集,那要怎么获取差集?
    前的文章《JS组学习清空全部元素的4种方法(代码详解)》中,我们删除全部组元素--即清空组的4种方法。
    前的文章《JS组学习怎么拼接全部元素,返回一个字符串》中,我们了解了将组转为字符串的方法。
    本文介绍MySQL基本使用DCL语句聚合函
    本文的中文主题则是“编写JavaScript程序来计算字(从用户输入)的乘积商”。如果说,我们需要根据用户输入的字来计算乘除,那么肯定要从建立表单开始。
    上一篇文章中我们了解了向函传递参中的引用传递参,有需要的请看《php函如何引用传递参?》。这次我们向大家介绍向函传递参中的另外种传递方式,有需要的可以参考参考。
    本篇文章来看看如何计算组中所以元素后,给大家介绍3钟方法:for循环、foreach循环array_sum()函(是的使用内置函,PHP中内置了许多函,来帮助我们进行开发),下面我们来一起看看吧
    前的文章→《PHP组学习比较组元素,获取第一大第二大值》中,我们介绍了使用for循环一一比较组中元素的大小,获取组中最大值第二大值的方法。
    前的文章中我们介绍了重置多维组索引的方法,感兴趣的可以点击链接进行查阅→《PHP组学习怎么重置多维组的索引》。
    据库中db、dbmsdbs三者间的关系是:DBS包括DBDBMS;据库系统DBS是一个通称,包括据库DB、据库管理系统DBMS、据库管理人员DBA等的统称,是最大的范畴。
    如果是你,你会如何使用PHP据类型查看判断据类型呢?本篇文章将会带你走进PHP的奇妙空间,跟随我的脚步一起出发吧!!!
    WebSocket 协议是基于 TCP 的一种新的网络协议,使得客户端服务器间的据交换变得更加简单,允许服务端主动向客户端推送据。
    前的文章中我们介绍了使用冒泡算法对组元素进行升序排序的方法,感兴趣的可以点击链接进行查阅→《PHP组学习使用冒泡算法对元素进行升序排序!》。
    在上一篇文章中,我们介绍了利用strtotime()函计算个给定日期间时间差的方法。这次我们来怎么返回给定日期前一天后一天日期、前一月后一月日期、一周后一周的日期等。