• leetcode刷题笔记三十六 有效的数独


    leetcode刷题笔记三十六 有效的数独

    源地址:36. 有效的数独

    问题描述:

    判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

    数字 1-9 在每一行只能出现一次。
    数字 1-9 在每一列只能出现一次。
    数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次

    知识补充:

    本题主要是保证行、列、宫内无重复数据,说到重复数据,很容易让人联想到数据结集合或者hashmap等,这里补充一下Set与Hash Set的相关知识。

    Set是一种最简单集合。集合中元素不按特定方式排序,且没有重复对象。Scala提供了两个子特质,一个用于不可变集合,一个用于可变集合。

    一些常见的集合操作:

    //定义集合
    val aSet = Set(1,2,3,4)
    val bSet = Set(5,6,7,8)
    //集合拼接
    val abSet = aSet + bSet
    
    //定义HashSet
    import scala.collection.mutable.HashSet
    val cSet = new HashSet[Int]()
    //添加
    cSet += 1
    cSet.add(2)
    //删除
    cSet -= 2
    cSet.remove(1)
    //不存在即添加
    cSet.update(2,true)
    

    代码补充:

    //将位置与值结合成字符串,分别表示行、列、宫
    //将他们插入HashSet,如果无法成功添加即说明已存在
    import scala.collection.mutable.HashSet 
    object Solution {
        def isValidSudoku(board: Array[Array[Char]]): Boolean = {
            val newSet = new HashSet[String]()
            for(i <- 0 until 9){
                for(j <- 0 until 9){
                    if(board(i)(j) != '.'){
                        val iRow = "(" + i + ") " + board(i)(j)
                        val jcol = board(i)(j) + "(" + j + ") " 
                        val squarl = "(" + i/3 + "," + j/3 +") " + board(i)(j)
                        println("----------------------------------")
                        println("iRow: "+iRow)
                        println("jcol: "+jcol)
                        println("squarl: "+squarl)
                        if(!newSet.add(iRow) || !newSet.add(jcol) || !newSet.add(squarl)) return false
                    }
                }
            }
            return true
        }
    }
    
  • 相关阅读:
    noi 2011 noi嘉年华 动态规划
    最小乘积生成树
    noi 2009 二叉查找树 动态规划
    noi 2010 超级钢琴 划分树
    noi 2011 阿狸的打字机 AC自动机
    noi 2009 变换序列 贪心
    poj 3659 Cell Phone Network 动态规划
    noi 2010 航空管制 贪心
    IDEA14下配置SVN
    在SpringMVC框架下建立Web项目时web.xml到底该写些什么呢?
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/12878150.html
Copyright © 2020-2023  润新知