刷题笔记
文章平均质量分 88
从零开始学算法
不断前进的皮卡丘
你有多努力的现在,就会有多无惧的未来。加油吧,少年!
展开
-
快速排序算法备考
我们知道快排在进行一次划分后,该元素的左边元素都比它小,右边都比它大。思路:想办法让右边元素大,左边元素小,而且尽量要把数组尽量平分,想到快排的划分思想,为了满足上述条件,右半部分的元素不能比左边元素个数少。主元素的元素数量超过数组长度的一半,如果数组有序,并且存在主元素,那么主元素一定在数组的中间位置。把数组A排成递增有序数列,排序后集合A1为[0,n/2-1],集合A2为[n/2n-1]第k小,说明左边有k-1个元素比它小,利用快排的划分思想,只要返回下标为k即可。右边:n/2~n-1。原创 2024-05-27 11:31:10 · 346 阅读 · 0 评论 -
[算法刷题笔记]哈希表(1)
学习算法,还有一些知识的时候,有时候看书后以为自己懂了,结果做题就发现自己没什么思路,为此,博主决定坚持刷题,这里给大家推荐一个适合大家做题复习,准备面试的网站点此进入,里面还有大量的面经,大家可以在面试之前去看看我们可以看到里面根据不同知识层面分成对应的题库,算法也进行了对应的分类,十分的友好,接下来就开始今天的刷题之旅。...原创 2022-08-11 10:45:00 · 450 阅读 · 0 评论 -
数据结构与算法:二叉搜索树
希望大家可以自己动手练习一下,算法光看是不行的,必须亲自动手敲代码,有时候你会发现自己有思路,但是又写不出来,这就是缺乏练习的原因。大家平时在做题的时候,可以多思考,多总结。刚开始的时候,我们可能遇到一种新的题型,完全没有思路的时候,其实可以先去看看别人的思路,还有题解,把它理解下来,然后把代码敲出来。另外,为了检测一下我们是否真正的掌握,我们可以去做几道相似的题目巩固一下,顺便检验一下自己的成果。当二叉搜索树进行中序遍历的时候,它们的节点的值是按照从小到大排序的,我们可以利用这个性质来解答。...原创 2022-08-05 09:48:06 · 1532 阅读 · 64 评论 -
[算法刷题笔记]二叉树之左叶子之和
学习算法,还有一些知识的时候,有时候看书后以为自己懂了,结果做题就发现自己没什么思路,为此,博主决定坚持刷题,这里给大家推荐一个适合大家做题复习,准备面试的网站点此进入,里面还有大量的面经,大家可以在面试之前去看看我们可以看到里面根据不同知识层面分成对应的题库,算法也进行了对应的分类,十分的友好,接下来就开始今天的刷题之旅。...原创 2022-08-04 09:39:06 · 535 阅读 · 16 评论 -
[算法刷题笔记]二叉树练习(3)完全二叉树的节点个数
学习算法,还有一些知识的时候,有时候看书后以为自己懂了,结果做题就发现自己没什么思路,为此,博主决定坚持刷题,这里给大家推荐一个适合大家做题复习,准备面试的网站点此进入,里面还有大量的面经,大家可以在面试之前去看看我们可以看到里面根据不同知识层面分成对应的题库,算法也进行了对应的分类,十分的友好,接下来就开始今天的刷题之旅。......原创 2022-07-29 15:02:39 · 496 阅读 · 2 评论 -
[算法刷题笔记]二叉树练习(2):对称二叉树有关的练习
学习算法,还有一些知识的时候,有时候看书后以为自己懂了,结果做题就发现自己没什么思路,为此,博主决定坚持刷题,这里给大家推荐一个适合大家做题复习,准备面试的网站点此进入,里面还有大量的面经,大家可以在面试之前去看看我们可以看到里面根据不同知识层面分成对应的题库,算法也进行了对应的分类,十分的友好,接下来就开始今天的刷题之旅。...原创 2022-07-27 13:57:40 · 1105 阅读 · 33 评论 -
[算法刷题笔记]二叉树练习(1)二叉树的镜像
学习算法,还有一些知识的时候,有时候看书后以为自己懂了,结果做题就发现自己没什么思路,为此,博主决定坚持刷题,这里给大家推荐一个适合大家做题复习,准备面试的网站点此进入,里面还有大量的面经,大家可以在面试之前去看看我们可以看到里面根据不同知识层面分成对应的题库,算法也进行了对应的分类,十分的友好,接下来就开始今天的刷题之旅上面那两种方法是我能够想出来的思路,如果大家想要看看其他的思路的话,我们可以在牛客的题解上面看到其他人的思路和代码,大家具体的可以去看看,也可以在上面和大家一起交流探讨牛客。.......原创 2022-07-23 19:27:11 · 652 阅读 · 34 评论 -
二叉树层序遍历相关题目
刷题路线来自代码随想录。原创 2022-07-21 01:39:52 · 1335 阅读 · 5 评论 -
数据结构:二叉树的非递归遍历
的顺序来遍历的,如果要使用迭代的方法来解决,我们可以使用栈来解决,先把根节点放入栈中,然后将右孩子加入栈,再加入左孩子。中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是在把节点的数值放进result数组中)后续遍历的遍历顺序是左右根,前序遍历的遍历顺序是根左右,我们发现我们只需要调整一下左右孩子的进栈顺序,然后再反转一下,就可以得到后序遍历。那么在使用迭代法写中序遍历,就需要借用指针的遍历来帮助访问节点,栈则用来处理节点上的元素。...原创 2022-07-20 07:00:00 · 936 阅读 · 3 评论 -
二叉树的遍历方式(递归)
写完了递归算法,运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。给定一个二叉树的根节点root,返回它的中序遍历。给你二叉树的根节点root,返回它节点值的前序遍历。前序遍历,其实就是先访问根节点,然后访问左子树,再访问右子树。...原创 2022-07-17 16:04:44 · 274 阅读 · 3 评论 -
LeetCode刷题:栈和队列的相关题目
文章是跟着代码随想录的刷题路线来的,对里面的一些题目进行了总结原创 2022-07-17 07:00:00 · 511 阅读 · 3 评论 -
数据结构:栈及其应用
因为栈可以用顺序存储实现也可以用链式存储实现,所以把共性抽取定义出Stack接口因为栈本身是一种特殊的线性表,所以我们可以用上一篇博客中完成的ArrayList来实现我们的ArrayStack20.有效的括号思路分析.........原创 2022-07-11 11:12:26 · 763 阅读 · 15 评论 -
LeetCode80. 删除有序数组中的重复项 II
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。LeetCode80. 删除有序数组中的重复项 II这道题目其实就是说,数组中如果存在重复元素的话,那么这个元素只能出现两次。像这种原地修改的题目,很容易就想到双指针...原创 2022-07-08 22:42:51 · 649 阅读 · 15 评论 -
算法-数组:移除元素
接下来大家可以先看看本篇文章刷了哪些题给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,原创 2022-07-07 13:40:08 · 1302 阅读 · 38 评论 -
数据结构与算法 二叉树的详解
文章目录 什么是树?树形结构的概念重要概念 树的表示形式树的应用二叉树概念总结 两种特殊的二叉树二叉树性质二叉树存储模拟实现二叉树准备工作构造二叉树节点 - (孩子表示法)构建一棵这样的二叉树debug【调试效果图】 二叉树最重要的功能 - 遍历二叉树 - (一级标题 更显重要。)1. NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点--->根的左子树--->根的右子树2. LNR:中序遍历(Inorder Trav..转载 2022-05-14 10:51:32 · 643 阅读 · 20 评论 -
Leetcode 链表简单题
1.合并两个有序链表2.环形链表3.相交链表(需要推导)4.移除链表元素5.链表的反转6.回文链表7.剑指 Offer 22. 链表中倒数第k个节点方法1 计算链表长度,根据索引找到结点方法2 快慢指针8.找到链表的中间结点1.合并两个有序链表题目链接21.合并两个有序链表思路:题目已经说明了给出的两个链表,A,B都是有序的,为了使得他们合并后的链表也是有序的,我们先定义一个新的链表C的头结点,我们应该定义两个指针,分别指向A链表的头结点,和B链表的头结点,对链表进行遍历,如果A链表的元素值比较.原创 2022-05-12 09:00:00 · 479 阅读 · 13 评论