1. 程式人生 > >Scala LeetCode 1.兩數之和

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可以省略