当前位置: 首页 > news >正文

力扣(2024.06.17)

1. 36——有效的数独

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

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

注意:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。
  • 空白格用 '.' 表示。

标签:数组,哈希表,矩阵

代码:

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        hang = []
        lie = []
        gong = []
        for i in range(9):
            hang.append([])
            lie.append([])
            gong.append([])
        for i in range(9):
            for j in range(9):
                num = board[i][j]
                if num == ".":
                    continue
                else:
                    if num in hang[i] or num in lie[j] or num in gong[i // 3 * 3 + j // 3]:
                        return False
                    else:
                        hang[i].append(num)
                        lie[j].append(num)
                        gong[i // 3 * 3 + j // 3].append(num)
        return True

2. 37——解数独

编写一个程序,通过填充空格来解决数独问题。

数独的解法需遵循如下规则:

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

数独部分空格内已填入了数字,空白格用 '.' 表示。

标签:数组,哈希表,回溯,矩阵(目前不会)

代码:

3. 38——外观数列

「外观数列」是一个数位字符串序列,由递归公式定义:

  • countAndSay(1) = "1"
  • countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。

行程长度编码(RLE)是一种字符串压缩方法,其工作原理是通过将连续相同字符(重复两次或更多次)替换为字符重复次数(运行长度)和字符的串联。例如,要压缩字符串 "3322251" ,我们将 "33" 用 "23" 替换,将 "222" 用 "32" 替换,将 "5" 用 "15" 替换并将 "1" 用 "11" 替换。因此压缩后字符串变为 "23321511"

给定一个整数 n ,返回外观数列的第 n 个元素。

标签:字符串,双指针

代码:

class Solution:
    def countAndSay(self, n: int) -> str:
        def count(num_str):
            slow = 0
            fast = 0
            res = ''
            while fast < len(num_str):
                if num_str[slow] != num_str[fast]:
                    res = res + str(fast - slow) + num_str[slow]
                    slow = fast
                else:
                    fast = fast + 1
            res = res + str(fast - slow) + num_str[slow]
            return res

        res = '1'
        if n == 1:
            return res
        else:
            for i in range(n - 1):
                res = count(res)
            return res

相关文章:

  • 【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——中
  • c++ 智能指针使用注意事项及解决方案
  • 教学资源共享平台的设计
  • 富瀚微FH8322 ISP图像调试—BLC校正
  • XXE漏洞详解:从基础到防御
  • 8.12 矢量图层面要素单一符号使用一(简单填充)
  • python基础面试器(其一)
  • 为什么要学习这么多“没用”的知识
  • 持续总结中!2024年面试必问 20 道设计模式面试题(一)
  • 倩女幽魂手游攻略:云手机自动搬砖辅助教程!
  • Python学习从0开始——Kaggle深度学习002
  • Java多线程设计模式之不可变对象(Immutable Object)模式
  • [深度学习]基于C++和onnxruntime部署yolov10的onnx模型
  • Swift开发——元组
  • 一篇搞定Spring,IOC容器,Bean管理,3.AOP底层原理和实现(收下吧,真的很详细)
  • Linux之逻辑控制符
  • 【Linux】使用 iptables 验证访问HDFS 所使用到的端口
  • Warning: `ReactDOMTestUtils.act` is deprecated in favor of `React.act`.
  • Linux远程访问及控制
  • MySQL的卸载
  • 山大齐鲁医院回应护士论文现“男性确诊子宫肌瘤”:给予该护士记过处分、降级处理
  • 美国内政部长:今年夏天美国可能发生西班牙式大停电,全怪拜登
  • 谢承祥已任自然资源部总工程师
  • 新加坡执政党人民行动党在2025年大选中获胜
  • 美国将于6月14日举行阅兵式,美媒报当天是特朗普生日
  • 研究完蚂蚁搬家,我好像明白了为什么我们总是堵车