Datawhale LeetCode训练营
文章平均质量分 69
记录在LeetCode训练营中课程的学习心得。
jacpty
这个作者很懒,什么都没留下…
展开
-
[LeetCode训练营]搜索
搜索查找顺序搜索(无序)二叉搜索树(无序)二分搜索(有序)遍历深度优先(栈)广度优先(队列)查找顺序搜索(无序)从第一个开始,逐个比较。二叉搜索树(无序)若它的左子树不空,则左子树所有结点的值均小于它的根结构的值。若它的右子树不空,则右子树所有结点的值均大于它的根结构的值。它的左右子树也分别为二叉搜索树。没有键值相等的结点。例子:12 23 26 37 54 60 68 75 82 96二分搜索(有序)在有序记录集中,每次把待查区间中间位置记录 mid 的关键词与 key 比较,若原创 2022-03-01 22:31:05 · 178 阅读 · 0 评论 -
[LeetCode训练营]双指针
双指针双指针模型对撞指针同速指针快慢指针双指针模型当遇到有序数组时,应该优先想到双指针来解决问题,因为两个指针的同时遍历会减少空间复杂度和时间复杂度。如果给定数组没有排序,可以考虑排序后找规律以此提高算法的时间复杂度和空间复杂度。对撞指针对撞指针是指在有序数组中,将指向最左侧的索引定义为左指针(left),最右侧的定义为右指针(right),然后从两头向中间进行数组遍历。常用于有序数组或指针。同速指针链表上两个指针,一个先出发,另一个后出发并以相同的速度跟随。求链表的逆:通过临时指针让双指原创 2022-02-27 22:07:40 · 234 阅读 · 0 评论 -
[LeetCode训练营]位运算
位运算原码、反码和补码按位非操作 ~按位与操作 &按位或操作 |按位异或操作 ^按位左移 <<按位右移 >>原码、反码和补码二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。符号位:最高位为符号位,0表示正数,1表示负数。在位运算中符号位也参与运算。原码:就是其二进制表示(最高位是符号位)。00 00 00 11 -> 310 00 00 11 -> -3反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数原创 2022-02-25 20:54:50 · 100 阅读 · 0 评论 -
[LeetCode训练营]树
树树的定义树和单链表的区别:树的定义树的二叉树树的定义树和单链表的区别:单链表:一个数据域+一个指针域树:一个数据域+多个指针域树的定义树是N(N>=0)个节点的有限集合。N=0时为空树,N>0时应满足:有且仅有一个特定的称为根的节点N>1时,其余节点可分为m(m>0)个互不相交的有限集合。其中,每一个有限集合自身又是一棵树。根节点:非空树处于最上层的唯一节点,其余节点都是它的子孙后代节点的度:节点具有的孩子节点个数叶子节点:度为0的节点父子节点:原创 2022-02-23 21:56:28 · 228 阅读 · 0 评论 -
[LeetCode训练营]字符串
字符串一、字符串的定义字符串常见的问题二、字符串的比较三、字符串的存储结构四、字符串的匹配问题单模式匹配问题多模式匹配问题单模式串朴素匹配算法Brute Force算法KMP算法一、字符串的定义字符串:简称为串,是由零个或多个字符组成的有限序列。一般记为s = “a1a2 .…an" (0 ≤ ∞)。空串:零个字符构成的串也称为「空字符串」,它的长度为0,可以表示为" "。子串∶字符串中任意个连续的字符组成的子序列称为该字符串的「子串」。并且有两种特殊子串,起始于位置为0、长度为 k 的子串称为原创 2022-02-21 22:22:23 · 299 阅读 · 0 评论 -
[LeetCode训练营]15.三数之和 的分析与优化
题目分析与优化吹水分析题目题目第一种方法第二种方法(答案)第三种方法吹水刚开始刷LeetCode,第一节课学的数组,这是当时写的笔记[LeetCode训练营]数组课后作业有一道中等题:15.三数之和。正好要开技术分析会,得益于LeetCode强大的保存功能,可以找到之前提交过的源码,所以我能很方便地将我解这道题的思路分享出来。分析题目题目给你一个包含 n个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组原创 2022-02-20 22:24:07 · 374 阅读 · 0 评论 -
[LeetCode训练营]栈
栈栈一、栈的介绍二、栈的定义三、栈的存储栈一、栈的介绍栈(Stack):也称为堆栈。一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表。我们把栈中允许插入和删除的一端称为「栈顶(top)」;另一端则称为「栈底(bottom)」。当表中没有任何数据元素时,称之为「空栈」。堆栈有两种基本操作:「插入操作」和「删除操作」栈的插入操作又称为「入栈」或者「进栈」栈的删除操作又称为「出栈」或者「退栈」二、栈的定义线性表栈中元素按照 a1, a2, ···, an 的次序依次原创 2022-02-19 22:45:45 · 231 阅读 · 0 评论 -
[LeetCode训练营]链表
[LeetCode训练营]链表链表的逻辑结构链表的存储结构顺序存储链式存储索引存储散列存储链表的逻辑结构数据与元素之间的逻辑关系集合、线性结构(一对一)树形结构(一对多)图结构(多对多)链表的存储结构顺序存储逻辑上相邻的元素物理位置也相邻链式存储逻辑上相邻的元素物理位置不一定相邻索引存储散列存储...原创 2022-02-17 23:33:05 · 525 阅读 · 0 评论 -
[LeetCode训练营]数组
数组在内存中的存储方式按顺序连续存储数组名表示该数组的首地址数组的索引时间复杂度为O(n^x),x为数组是第几维数组。数组在算法上的优化如果数组是无序的,可以先把他排序让他变成有序以便寻找规律使用双指针模型...原创 2022-02-14 17:59:07 · 233 阅读 · 0 评论