zoukankan      html  css  js  c++  java
  • 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
        }
    }
    
  • 相关阅读:
    168. Excel Sheet Column Title
    171. Excel Sheet Column Number
    264. Ugly Number II java solutions
    152. Maximum Product Subarray java solutions
    309. Best Time to Buy and Sell Stock with Cooldown java solutions
    120. Triangle java solutions
    300. Longest Increasing Subsequence java solutions
    63. Unique Paths II java solutions
    221. Maximal Square java solutions
    279. Perfect Squares java solutions
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/12878150.html
Copyright © 2011-2022 走看看