【LeetCode 算法刷题笔记】

题一:1.0151. 反转字符串中的单词

1.1 题目大意
描述:给定一个字符串 s。

要求:反转字符串中所有单词的顺序。

说明:

单词:由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。
输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。
返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

s 包含英文大小写字母、数字和空格 ’ ’
s 中至少存在一个单词。

解题思路

这是一个偏向简单类型的算法题
解题点是对字符串以空格为分切点,得到一个列表,再以列表倒序进行拼接。

class Solution:
    def reverseWords(self, s: str) -> str:
        s=s.split()
        s=' '.join(s[::-1])
        return s;

提交结果:
在这里插入图片描述

题二:2.0043. 字符串相乘

2.1 题目大意
描述:给定两个以字符串形式表示的非负整数 num1 和 num2。

要求:返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

说明:

不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

num1 和 num2 只能由数字组成。
num1 和 num2 都不包含任何前导零,除了数字0本身。

解题思路

题目说不能用python关键字把字符型封转成int,解题是需要把字符型转换成整形,这是题目的难点

通过字典构建”0“->0的映射,就能很好解决这个问题,能够参与运算

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        dic={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}
        f1=1
        ans=0
        for i in range(len(num1)-1,-1,-1):
            f2=1
            n1=dic[num1[i]]*f1
            for j  in range(len(num2)-1,-1,-1):
                n2=dic[num2[j]]*f2
                ans+=n1*n2
                f2*=10
            f1*=10
        return str(ans)

在这里插入图片描述

题三:3.0014. 最长公共前缀

3.1 题目大意
描述:给定一个字符串数组 strs。

要求:返回字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
说明:
在这里插入图片描述
strs[i] 仅由小写英文字母组成。

解题思路

找出里面长度最短的字符串,然后循环比对,依次减一。

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        item=""
        for num in strs:
            if len(item)==0 or len(num)<len(item):
                item=num
        for num in strs:
            while num.find(item)!=0:
                item=item[:-1]
        return item

144. 二叉树的前序遍历

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        if not root:
            return []
        stack,value=[root],[]
        while stack:
            node=stack.pop()
            value.append(node.val)
            if node:
                if node.right:
                    stack.append(node.right)
                if node.left:
                    stack.append(node.left)
        return value

144. 二叉树的中序遍历

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        tree=[]
        def helper(root):
            if not root:
                 return []
            helper(root.left)  # 中序遍历左子树
            tree.append(root.val)
            helper(root.right)  # 中序遍历右子树
            return tree
        tree=helper(root)
        return tree

3.0102. 二叉树的层序遍历

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root:
            return []
        queue=[root]
        tree=[]
        i=0
        while queue:
            size=len(queue)
            tree1=[]
            for _ in range(size):
                node=queue.pop(0)
                tree1.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            tree.append(tree1)
            i += 1
        return tree


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL语句之SELECT语句

一般格式 SELECT DISTINCT/ALL 目标列表达式 //要显示的属性列 FROM 表名/视图名 //查询的对象 WHERE 条件表达式 //查询条件 GROUP BY 列名 HAVING 条件表达式 //查询结果分组 ORDER BY 列名 次序; //最终查询结果排序 文章目录 一、基本查询 1、SELECT 目标列表达…

猜数字游戏有三变(Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

Debug和Release

Debug和Release 在VS上编写代码的时候&#xff0c;就能看到有 debug 和 release 两个选项&#xff0c;分别是什么意思呢&#xff1f; Debug 通常称为调试版本&#xff0c;它包含调试信息&#xff0c;并且不作任何优化&#xff0c;便于程序员调试程序&#xff1b;程序员在写代码…

跟着cherno手搓游戏引擎【29】Batch简单合批

思路&#xff1a; CPU和GPU都开辟同样大小的一大块内存&#xff08;为了存储顶点信息&#xff09; 索引在程序运行时生成对应规则后绑定到索引缓冲中 动态生成顶点信息&#xff08;现在改成Drawquad只是确定图形顶点的位置&#xff09; 然后在Endscene&#xff0c;将CPU的动…

零基础入门数据挖掘系列之「建模调参」

摘要&#xff1a;对于数据挖掘项目&#xff0c;本文将学习如何建模调参&#xff1f;从简单的模型开始&#xff0c;如何去建立一个模型&#xff1b;如何进行交叉验证&#xff1b;如何调节参数优化等。 建模调参&#xff1a;特征工程也好&#xff0c;数据清洗也罢&#xff0c;都是…

EtherCAT运动控制器在LabVIEW中的运动控制与实时数据采集

本文以正运动技术EtherCAT运动控制器ZMC408CE为例&#xff0c;介绍如何使用LabVIEW对控制器参数进行获取内容并生成示波器波形。 一、ZMC408CE硬件介绍 ZMC408CE是正运动推出的一款多轴高性能EtherCAT总线运动控制器&#xff0c;具有EtherCAT、EtherNET、RS232、CAN和U盘等通…

STM32相关资料汇总

STM32选型表 STM32手册参考网站 https://www.stmcu.org.cn/

Python 深度学习第二版(GPT 重译)(四)

九、高级计算机视觉深度学习 本章涵盖 计算机视觉的不同分支&#xff1a;图像分类、图像分割、目标检测 现代卷积神经网络架构模式&#xff1a;残差连接、批量归一化、深度可分离卷积 可视化和解释卷积神经网络学习的技术 上一章通过简单模型&#xff08;一堆Conv2D和MaxP…

Linux:Prometheus的源码包安装及操作(2)

环境介绍 三台centos 7系统&#xff0c;运行内存都2G 1.prometheus监控服务器&#xff1a;192.168.6.1 主机名&#xff1a;pm 2.grafana展示服务器:192.168.6.2 主机名&#xff1a;gr 3.被监控服务器&#xff1a;192.168.6.3 …

uniapp开发h5项目使用baidu-map组件实现地图引入,定位渲染,弹窗功能实现,根据定位路线图的实现

1.效果图 2.准备工作 cnpm install vue-baidu-map --save 在main.js中全局引入 import BaiduMap from vue-baidu-map Vue.use(BaiduMap, {// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ak: sRDDfAKpCSG5iF1rvwph4Q95M6tDCApL }) …

DNA存储技术原理是什么?

随着大数据和人工智能的发展&#xff0c;全球每天产生的数据量剧增&#xff0c;对存储设备的需求也随之增长&#xff0c;数据存储问题日益凸显。传统的硬盘驱动器&#xff08;HDD&#xff09;、磁带等冷存和深度归档存储占据数据中心存储的60-70%&#xff0c;由于它们的访问频率…

服务器数据恢复—异常断电导致服务器磁盘阵列崩溃的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档&#xff0c;上层安装的是Windows server操作系统&#xff0c;没有配置ups。 因为服务器异常断电重启后&#xff0c;raid阵列可以正常使用&#xff0c;所以未…

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(一)

概览 Swift 语言给我们的印象是&#xff1a;简洁、现代化和可以“心安神泰”的完全信赖。不过&#xff0c;在一些特殊情况下我们唯有进入 Swift 底层的动态世界方能真正地“随遇而安”。 保安局“刘局长”曾语重心长的教导过我们&#xff1a;“非常时期&#xff0c;用非常方法…

leetcode代码记录(删除字符串中的所有相邻重复项

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成…

Uibot6.0 (RPA财务机器人师资培训第1天 )RPA+AI、RPA基础语法

训练网站&#xff1a;泓江科技 (lessonplan.cn)https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北之前的几篇博客&#xff0c;友友们我们即将开展新课的学习~…

Socket类

2.2 Socket类 Socket 类&#xff1a;该类实现客户端套接字&#xff0c;套接字指的是两台设备之间通讯的端点。 构造方法 public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指定的host是null &#xff0c;则相当于指定地址为回送…

论文阅读之AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

文章目录 原文链接主要内容模型图技术细节实验结果 原文链接 AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE 主要内容 这篇文章的主要内容是介绍了一种新的计算机视觉模型——Vision Transformer&#xff08;ViT&#xff09;&#xff0c;这是…

爬虫基础:HTTP基本原理

爬虫基础&#xff1a;HTTP基本原理 前言HTTP基本原理URI 和 URLHTTP 和 HTTPSHTTP 请求过程请求与响应HTTP请求HTTP响应请求与响应的交互过程 HTTP 2.0二进制传输多路复用Header压缩服务器端提前响应内容安全 前言 了解 HTTP的基本原理&#xff0c;了解从往测览器中输人 URL到获…

软件安全测评要点有哪些?第三方软件安全测试是必需品吗?

在当今数字化时代&#xff0c;软件安全测试是每个软件开发团队都不能忽视的重要环节。安全测试是指对软件产品进行系统、全面的安全性评测与检测的过程。它旨在发现并修复软件中存在的漏洞和安全隐患&#xff0c;以确保软件能够在使用过程中保护用户的数据和隐私不被非法访问和…

Pytest自动化测试框架快速上手(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;薪资嘎嘎涨 pytest是一个非常成熟的全功能的Python测试框架&#…