
数据结构
文章平均质量分 66
ScrapingBoy
这个作者很懒,什么都没留下…
展开
-
数组刷题-力扣
一维数组刷题1.题目名称:加一66.加一# https://leetcode.cn/problems/plus-one/solution/class Solution: def plusOne(self, digits): tail = len(digits) - 1 carry = 0 # 进位 while tail >= 0: if digits[tail] < 9:原创 2022-05-21 19:22:00 · 193 阅读 · 0 评论 -
有效的括号-栈的括号匹配
1.题目描述题目链接给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:原创 2022-04-11 18:25:10 · 219 阅读 · 0 评论 -
栈与递归的应用
1.递归递归:简单理解的话,函数自己调用自己 就成为递归。递归定义时,递归的部分必须比原来的整体简单,并且递归要有 递归定义的出口,递归定义的出口 是 不能递归的,否则就会无限递归下去。我们知道 阶乘的数学定义如下:很明显 阶乘的定义就是 递归形式的。求 5的阶乘?步骤:1.求 fact(5), 我们需要求fact(4)2.在计算 fact(5) 时, 这个函数的参数是 n = 5, 然后递归调用 fact(4), 函数的参数 n=43.3.递归调用 fact(3) 时,函数参数为34原创 2022-04-11 16:45:56 · 513 阅读 · 0 评论 -
栈的实现与应用
1.栈栈:是一种常用的数据结构,特点是:先入后出实现方法:1.顺序表2.链表1.1 顺序表实现顺序表的实现:列表本身可以看做是用栈实现的,但是 list.pop(index=),形参的索引为空时可以看做出栈,但是list提供可以删除指定索引的元素,因此我们使用列表定义严格意义的栈。1.把列表 [] 作为私有的成员变量2.栈只能操作栈顶元素,我们根据顺序表的特点,把顺序表的尾部作为栈顶,操作式复杂度为O(1) 定义如下:# 定义异常:栈下溢 class StackUnderflow(原创 2022-04-09 14:51:16 · 1114 阅读 · 0 评论 -
反转链表-四种方法
反转链表链接题目:描述给定一个单链表的头结点head,长度为n,反转该链表后,返回新链表的表头。以上转换过程如下图所示:示例1输入:{1,2,3}返回值:{3,2,1}示例2输入:{}返回值:{}复制说明:空链表则输出空 1.迭代法因为单链表只能由当前节点查找到后一个节点,因此使用迭代法时,需要保存当前节点的后一个节点。curr 指向链表的当前节点,next 保存curr节点的下一个节点(因为是单链表,不保存的话,改变方向之后就找不到旧节点的原创 2022-03-29 14:16:29 · 29643 阅读 · 7 评论 -
数据结构:线性表
线性表是基本的数据结构之一,是一组元素的抽象。线性表包含顺序表和链接表(简称链表),顺序表在C语言中一般使用数组去实现,链表使用结构体去实现。在Python中,list对象是采用顺序表实现的。1. 顺序表顺序表是将表中的元素顺序的存储在连续的内存里。优点:查询速度快,时间复杂度为O(1)缺点:插入元素速度慢,时间复杂度为O(n)表中元素个数需要提前定义2. 链表链表:通过链接各个结点实现的技术就叫做链表。链表中的结点分为指针域和数据域,具体见下图。结点中的data用来存放数据原创 2022-03-28 20:48:59 · 2924 阅读 · 0 评论 -
字符串反转
字符串反转链接1.题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"] 提示:1 <=原创 2022-03-26 20:20:52 · 372 阅读 · 2 评论 -
字符串匹配
字符串匹配1.朴素的串匹配算法(暴力解法)1.1 分析设t是目标串(母串),p是模式串(待匹配串),i , j 分别指向 模式串 和 目标串,m、n分别是模式串p和目标串t的长度。从目标串的第0个字符,挨个进行比较,遇到不相等的字符就停止。模式串与目标串的下一个字符进行比较,重复上一个步骤。一个一个字符遍历目标串直到找到为止。1.2 Python实现:def match(t:str, p:str): ''' t:目标串(母串) p:模式串(要匹配的字符串)原创 2022-03-23 14:13:17 · 4725 阅读 · 0 评论 -
最大子数组和
最大子数组和1. 问题53. 最大子数组和难度简单4508收藏分享切换为英文接收动态反馈给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23原创 2022-03-13 19:18:24 · 7141 阅读 · 0 评论 -
查找常用字符
查找常用字符链接:https://leetcode-cn.com/problems/find-common-characters/1. 题目描述 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:["bella","label","roller"]输出:["e","l","l"]示例 2:原创 2021-10-02 16:08:25 · 191 阅读 · 0 评论 -
哈希表-有效的字母异位词
有效的字母异位词1. 题目要求给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false提示:1 <= s.length, t.length <= 5 * 104s 和 t 仅包含小写字母2.原创 2021-08-23 11:48:27 · 159 阅读 · 0 评论 -
环形链表 II 快慢指针法 + 哈希表法
环形链表 II 快慢指针法 + 哈希表法链接:https://leetcode-cn.com/problems/linked-list-cycle-ii/1. 题目要求给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。示例1:输入原创 2021-07-23 17:26:20 · 178 阅读 · 0 评论