版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34446485/article/details/81122307
PS:
从Java转Scala的时候会各种不适应Scala的函数式编程。。学习路线确实是陡峭的。。
连CSDN都没有Scala代码样式。。。只能使用GO了
主要点:
1、如何隐藏Java集合
2、如何实现Java方法
3、如何启动使用函数式代码
4、Scala泛型简单使用
5、如何使用break函数模拟的continue关键字【break同理,放在for外面即可】
6、任意地点的包导入
7、Scala数组使用
扫描二维码关注公众号,回复:
5896331 查看本文章
8、Scala队列简单使用
package cn.edu.jxnu.leetcode.scala
import scala.collection.mutable.PriorityQueue
import java.util.{ PriorityQueue ⇒ _, _ } //隐藏java集合
/**
* 使用scala队列实现378
*/
object Leetcode_378_Array_Queue extends App {
class Tuple(var x: Int, var y: Int, var v: Int) extends Comparable[Tuple] {
override def compareTo(that: Tuple): Int = {
return this.v - that.v
}
}
/**
* 无法识别运行main的时候记得重新编译一下
*/
override def main(args: Array[String]) {
val nums = Array(Array(1, 5, 9), Array(10, 11, 13), Array(12, 13, 15))
val k = 8
val ret = kthSmallest(nums, k)
print(ret)
}
def kthSmallest(matrix: Array[Array[Int]], k: Int): Int = {
val m = matrix.length
val n = matrix(0).length
val pq = new PriorityQueue[Tuple]
for (j ← 0 until n) {
pq.enqueue(new Tuple(0, j, matrix(0)(j)))
// pq.offer(new Tuple(0, j, matrix(0)(j))
}
for (i ← 0 until k - 1) { // 小根堆,去掉 k - 1 个堆顶元素,此时堆顶元素就是第 k 的数
val t = pq.dequeue()
import util.control.Breaks._
breakable(
if (t.x == m - 1) break)
pq.enqueue(new Tuple(t.x + 1, t.y, matrix(t.x + 1)(t.y)))
}
return pq.dequeue().v
}
}
package cn.edu.jxnu.leetcode.scala
/**
* 有序矩阵的 Kth Element
*
* 378. Kth Smallest Element in a Sorted Matrix ((Medium))
*
* matrix = [
* [ 1, 5, 9],
* [10, 11, 13],
* [12, 13, 15]
* ],
* k = 8,
* return 13.
* @author 梦境迷离
* @time 2018年7月18日
* @version v1.0
*/
object Leetcode_378_Array extends App { //自带main方法
/**
* 函数的定义必须在调用之前
*/
val kthSmallest = (matrix: Array[Array[Int]], k: Int) => {
val m = matrix.length
val n = matrix(0).length
var lo = matrix(0)(0)
var hi = matrix(m - 1)(n - 1)
while (lo <= hi) {
val mid = lo + (hi - lo) / 2
var cnt = 0
for (i ← 0 until m) {
for (j ← 0 until n if matrix(i)(j) <= mid) {
cnt += 1 //scala没++ --
}
}
if (cnt < k) lo = mid + 1
else hi = mid - 1
}
lo
}
val nums = Array(Array(1, 5, 9), Array(10, 11, 13), Array(12, 13, 15))
val k = 8
val ret = kthSmallest(nums, k)
print(ret)
}
github:https://github.com/jxnu-liguobin/Java-Learning-Summary/tree/master/Java-Learning-Summary/src/cn/edu/jxnu/leetcode/scala Scala For Leetcode