Python每日一练(20230416)

news2025/1/16 2:41:02

目录

1. 有效数字  🌟🌟🌟

2. 二叉树的最大深度  🌟

3. 单词搜索  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 有效数字

有效数字(按顺序)可以分成以下几个部分:

  1. 一个 小数 或者 整数
  2. (可选)一个 'e' 或 'E' ,后面跟着一个 整数

小数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+' 或 '-'
  2. 下述格式之一:
    1. 至少一位数字,后面跟着一个点 '.'
    2. 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
    3. 一个点 '.' ,后面跟着至少一位数字

整数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+' 或 '-'
  2. 至少一位数字

部分有效数字列举如下:

  • ["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]

部分无效数字列举如下:

  • ["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]

给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

示例 1:

输入:s = "0"
输出:true

示例 2:

输入:s = "e"
输出:false

示例 3:

输入:s = "."
输出:false

示例 4:

输入:s = ".1"
输出:true

提示:

  • 1 <= s.length <= 20
  • s 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,或者点 '.' 。

以下程序实现了这一功能,请你填补空白处内容:

```python
class Solution(object):
    def isNumber(self, s):
        s = s.strip()
        ls, pos = len(s), 0
        if ls == 0:
            return False
        if s[pos] == '+' or s[pos] == '-':
            pos += 1
        isNumeric = False
        while pos < ls and s[pos].isdigit():
            pos += 1
            isNumeric = True
        _____________________________;
        elif pos < ls and s[pos] == 'e' and isNumeric:
            isNumeric = False
            pos += 1
            if pos < ls and (s[pos] == '+' or s[pos] == '-'):
                pos += 1
            while pos < ls and s[pos].isdigit():
                pos += 1
                isNumeric = True
        if pos == ls and isNumeric:
            return True
        return False
# %%
s = Solution()
print(s.isNumber(s = "0"))
```

出处:

https://edu.csdn.net/practice/25740860

代码:

class Solution(object):
    def isNumber(self, s):
        s = s.strip()
        ls, pos = len(s), 0
        if ls == 0:
            return False
        if s[pos] == '+' or s[pos] == '-':
            pos += 1
        isNumeric = False
        while pos < ls and s[pos].isdigit():
            pos += 1
            isNumeric = True
        if pos < ls and s[pos] == '.':
            pos += 1
            while pos < ls and s[pos].isdigit():
                pos += 1
                isNumeric = True
        elif pos < ls and s[pos] == 'e' and isNumeric:
            isNumeric = False
            pos += 1
            if pos < ls and (s[pos] == '+' or s[pos] == '-'):
                pos += 1
            while pos < ls and s[pos].isdigit():
                pos += 1
                isNumeric = True
        if pos == ls and isNumeric:
            return True
        return False
# %%
s = Solution()
print(s.isNumber(s = "0"))
print(s.isNumber(s = "e"))
print(s.isNumber(s = "."))
print(s.isNumber(s = ".1"))

输出:

True
False
False
True


2. 二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7]

     3
    / \
   9  20
 /  \
15   7

返回它的最大深度 3 。

出处:

https://edu.csdn.net/practice/25740861

代码:

class TreeNode:
     def __init__(self, x):
         self.val = x
         self.left = None
         self.right = None

def listToTree(lst: list) -> TreeNode:
    if not lst:
        return None
    root = TreeNode(lst[0])
    queue = [root]
    i = 1
    while i < len(lst):
        node = queue.pop(0)
        if lst[i] is not None:
            node.left = TreeNode(lst[i])
            queue.append(node.left)
        i += 1
        if i < len(lst) and lst[i] is not None:
            node.right = TreeNode(lst[i])
            queue.append(node.right)
        i += 1
    return root

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root is None:
            return 0
        maxdepth = max(self.maxDepth(root.left),self.maxDepth(root.right)) + 1
        return maxdepth
# %%
s = Solution()
null = None
nums = [3,9,20,null,null,15,7]
root = listToTree(nums)
print(s.maxDepth(root))

输出:

3

代码2:DFS

class TreeNode:
     def __init__(self, x):
         self.val = x
         self.left = None
         self.right = None

def listToTree(lst: list) -> TreeNode:
    if not lst:
        return None
    root = TreeNode(lst[0])
    queue = [root]
    i = 1
    while i < len(lst):
        node = queue.pop(0)
        if lst[i] is not None:
            node.left = TreeNode(lst[i])
            queue.append(node.left)
        i += 1
        if i < len(lst) and lst[i] is not None:
            node.right = TreeNode(lst[i])
            queue.append(node.right)
        i += 1
    return root

class Solution:
    def maxDepth(self, root: TreeNode):
        if not root:
            return 0
        depth = []
        def dfs(node, nodes=[]):
            if not node:
                return
            nodes.append(node.val)
            if node.left or node.right:
                dfs(node.left, nodes)
                dfs(node.right, nodes)
            else:
                depth.append(len(nodes))
            nodes.pop()
        dfs(root)
        return max(depth)
# %%
s = Solution()
null = None
nums = [3,9,20,null,null,15,7]
root = listToTree(nums)
print(s.maxDepth(root))

3. 单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

示例 1:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
输出:true

示例 2:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
输出:true

示例 3:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
输出:false

提示:

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • board 和 word 仅由大小写英文字母组成

进阶:你可以使用搜索剪枝的技术来优化解决方案,使其在 board 更大的情况下可以更快解决问题?

出处:

https://edu.csdn.net/practice/25740862

代码:

class Solution(object):
    def exist(self, board, word):
        """
        :type board: List[List[str]]
        :type word: str
        :rtype: bool
        """
        check_board = [[True] * len(board[0]) for _ in range(len(board))]
        for i in range(len(board)):
            for j in range(len(board[0])):
                if board[i][j] == word[0] and check_board:
                    check_board[i][j] = False
                    res = self.check_exist(check_board, board, word, 1, len(word), i, j)
                    if res:
                        return True
                    check_board[i][j] = True
        return False
    def check_exist(self, check_board, board, word, index, ls, row, col):
        if index == ls:
            return True
        for temp in [(0, 1),(0, -1),(1, 0),(-1, 0)]:
            curr_row = row + temp[0]
            curr_col = col + temp[1]
            if curr_row >= 0 and curr_row < len(board) and curr_col >= 0 and curr_col < len(board[0]):
                if check_board[curr_row][curr_col] and board[curr_row][curr_col] == word[index]:
                    check_board[curr_row][curr_col] = False
                    res = self.check_exist(check_board, board, word, index + 1, len(word), curr_row, curr_col)
                    if res:
                        return res
                    check_board[curr_row][curr_col] = True
        return False
if __name__ == "__main__":
    s = Solution()
    print (s.exist(board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"))

输出:

True


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RabbitMQ】图解RabbitMQ是如何保证消息可靠性的

目录 一、概述 1、消息可靠性 2、SpringBoot整合RabbitMQ配置文件 二、生产者---RabbitMQ服务器如何保证信息不丢失 1、confirm确认模式 1.说明 2.SpringBoot代码实现 2、return退回模式 1.说明 2.SpringBoot代码实现 三、RabbitMQ服务器如何保证消息不丢失 四、Ra…

Logstash:使用自定义正则表达式模式

有时 Logstash Grok 没有我们需要的模式。 幸运的是我们有正则表达式库&#xff1a;Oniguruma。在很多时候&#xff0c;如果 Logstash 所提供的正则表达不能满足我们的需求&#xff0c;我们选用定制自己的表达式。 定义 Logstash 是一种服务器端数据处理管道&#xff0c;可同时…

zabbix客户端配置

一、zabbix客户端配置 1.实验环境&#xff1a;关闭防火墙和安全模块 systemctl disable --now firewalld setenforce 0 2.服务端和客户端都要时间同步 yum install -y ntpdate #注意安装需要用网络源安装&#xff0c;不能用本地源 ntpda…

电子器件系列34:tvs二极管(2)

一、基本原理&#xff1a; 二、重要产数&#xff1a; 不同的资料对于相同的参数可能有不同的命名&#xff0c;要根据实际情况来确定参数的意义 这里以上图表格里的参数名称进行解析&#xff0c;以其他资料作为参考。 结合图表和伏安特性曲线&#xff0c;再结合下面的图我是…

你认为的.NET数据库连接池,真的是全部吗?

一般我们的项目中会使用1到2个数据库连接配置&#xff0c;同程艺龙的数据库连接被收拢到配置中心&#xff0c;由DBA统一配置和维护&#xff0c;业务方通过某个字符串配置拿到的是开箱即用的Connection对象。 DBA能在对业务方无侵入的情况下&#xff0c;让大规模微服务实例切换…

第二周P9-P22

文章目录第三章 系统总线3.1、总线的基本概念一、为什么要用总线二、什么是总线三、总线上信息的传送四、总线结构的计算机举例1、单总线结构框图2、面向CPU的双总线结构框图3、以存储器为中心的双总线结构图3.2、总线的分类1、片内总线2、系统总线3、通信走线3.3、总线特性及性…

基于多目标粒子群优化算法的计及光伏波动性的主动配电网有功无功协调优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Vivado中ILA(集成逻辑分析仪)的使用

Vivado中ILA&#xff08;集成逻辑分析仪&#xff09;的使用一、写在前面二、ILA(Integrated Logic Analyzer)的使用2.1 ILA查找2.2 ILA配置2.2.1 General Options2.2.2 Probe Ports三、ILA调用四、ILA联调4.1 信号窗口4.2 波形窗口4.3 状态窗口4.4 设置窗口4.5 触发条件设置窗口…

Segment Anything论文详解(SAM)

论文名称&#xff1a;Segment Anything 论文地址&#xff1a;https://arxiv.org/abs/2304.02643 开源地址&#xff1a;https://github.com/facebookresearch/segment-anything demo地址&#xff1a;Segment Anything | Meta AI 主要贡献&#xff1a;开发一个可提示的图像分…

6.Java数组

数组 一、数组概述 1、什么是数组&#xff1f; 数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据&#xff0c;按照一定的先后次序排列组合而成。其中&#xff0c;每一个数据称作一个元素&#xff0c;每个元素可以通过一个索引(下标)来访问它们。 2、数组的…

哈夫曼树和最小生成树

哈夫曼树 首先给我们一串权值&#xff0c;然后我们需要让这串权值组成一个树&#xff0c;然后当他的wpl最小 我们可以发现当他的小权值离根节点越远&#xff0c;大权值离根节点越近的时候&#xff0c;我们这个时候构建出来的树就是wpl最小的树&#xff0c;也就是我们说的哈夫曼…

c++之 类和对象

目录 1.类和对象的基本概念 1.c语言与c中的结构体 2.类的封装性 3.定义类 4.构造与析构 构造与析构的概念&#xff1a; 构造函数 析构函数 拷贝构造函数 c默认增加的函数 1.类和对象的基本概念 1.c语言与c中的结构体 我们知道在c语言里&#xff0c;我们是无法在结构体…

进程的开销比线程大在了哪里?

进程内部都有哪些数据&#xff1f; 为什么创建进程的成本很高&#xff1f; 这样的问题确实不好回答&#xff0c;除非你真正理解了进程和线程的原理&#xff0c;否则很容易掉入面试大坑。探究问题背后的原理&#xff0c;围绕面试题展开理论与实践知识的学习。真正理解进程和线…

centos7虚拟机下hbase的使用案例讲解

系列文章目录 centos7虚拟机在集群zookeeper上面配置hbase的具体操作步骤 centos7虚拟机配置集群时间同步的操作步骤_centos虚拟机时间同步 centos7配置zookeeper本地模式与集群模式的详细教程 卸载centos7自带的jdk的操作步骤_centos7 卸载java 虚拟机centos7配置Hadoop单…

如何用 Vitis HLS 实现 OpenCV 仿真

这篇文章的基础是《Windows上快速部署Vitis HLS OpenCV仿真库》&#xff0c;我们使用的版本是Vitis HLS 2022.2&#xff0c;其他版本BUG不清楚&#xff0c;目前已知2021版本有BUG&#xff0c;只能使用其他方式&#xff0c;本文不适合。 这次选择中值滤波这个常规算法作为演示算…

Springboot电脑商城项目

目录 系统概述与环境搭建 1 系统开发及运行环境 2 项目分析 3 创建数据库 4 创建Spring Initializr项目 5 配置并运行项目 6 导入前端项目 用户注册 1 用户-创建数据表 2 用户-创建实体类 3 用户-注册-持久层 4 用户-注册-业务层 5 用户-注册-控制器 6 用户-注册…

归并排序(递归实现)

上一次我们说了快排的其他版本&#xff0c;还有就是快排的非递归实现 这次我们就说一哈归并排序&#xff0c;归并排序也是很厉害的一种排序&#xff0c;而且归并排序的时间复杂度可以说成标准的O(n log n) 下面我们就来看一下归并排序 我们先来看一下什么是归并排序 假设我…

Scratch蓝桥杯实战训练 —— 巧解“韩信点兵”难题的五种方式

“韩信点兵”蓝桥杯问题描述&#xff1a; “蓝桥杯”中有一道有趣的 Scratch 编程题&#xff0c;题目要求为&#xff1a;韩信点兵 扩展知识&#xff1a; 这道题叫“中国余数定理”&#xff0c;又叫“孙子定理”&#xff0c;也叫“韩信点兵问题”&#xff0c;是我国古代数学智慧…

Faster-RCNN代码解读3:制作自己的数据加载器

Faster-RCNN代码解读3&#xff1a;制作自己的数据加载器 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现&#xff0c;不要多想&#xff0c;我还没有厉害到可以一个人复现所有代码。所以&#xff0c;是参考别人的代码&#xff0c;进行自己的解读。 ​ 代码来自于B站的UP主&…

Node【三】Buffer 与 Stream

文章目录&#x1f31f;前言&#x1f31f;Buffer&#x1f31f; Buffer结构&#x1f31f; 什么时候用Buffer&#x1f31f; Buffer的转换&#x1f31f; Buffer使用&#x1f31f; 创建Buffer&#x1f31f; 字符串转Buffer&#x1f31f; Buffer转字符串&#x1f31f; 拼接Buffer&…