Scala LeetCode 1.两数之和

Scala 应该每个大数据从业者都要会一点的语言,光会Java或许不行。对我来说,学习一门语言最好的方法就是用这门语言,去A几道题。

题目链接: https://leetcode-cn.com/problems/two-sum/

import scala.collection.mutable

object Main {
  def twoSum(nums: Array[Int], target: Int): Array[Int] = {
    val a: mutable.HashMap[Int, Int] = mutable.HashMap()
    for (i <- nums.indices) {
      val x = target - nums(i)
      if (a.contains(x)) {
        return Array(a(x), i)
      }
      a(nums(i)) = i
    }
    Array(-1, -1)
  }
  def main(args: Array[String]): Unit = {
    assert(twoSum(Array(2, 7, 11, 15), 9).sameElements(Array(0, 1)))
  }
}

从这个简单的题目中可以总结出以下今后会用的东西。
个人感觉 Scala应该是一门表现能力很丰富的语言,我个人风格还是偏向于把它写得像Java一点。

  1. main 方法中 assert可以用来测试
  2. 库多,有比较两个数组是否相等的 sameElements方法
  3. 定义数组用 Array(a1, a2, a3) 不需要 new
  4. HashMap有很多种写法,我这种是先 import scala.collection.mutable 再用
  5. indices可以获取数组的下标集合
  6. 取集合元素的方法从Java的[]变成了()
  7. 最后一行的return可以省略

猜你喜欢

转载自blog.csdn.net/YYecust/article/details/85593946