Scala LeetCode 1.兩數之和
阿新 • • 發佈:2019-01-02
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一點。
- main 方法中 assert可以用來測試
- 庫多,有比較兩個陣列是否相等的 sameElements方法
- 定義陣列用 Array(a1, a2, a3) 不需要 new
- HashMap有很多種寫法,我這種是先 import scala.collection.mutable 再用
- indices可以獲取陣列的下標集合
- 取集合元素的方法從Java的[]變成了()
- 最後一行的return可以省略