
笔记
Nobody cares.
All experience comes from mistakes.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据挖掘(一)数据类型与统计
打算新开一个笔记系列,基于国防科技大学 丁兆云老师的《数据挖掘》数据挖掘。原创 2024-05-09 21:39:39 · 1792 阅读 · 0 评论 -
复制二叉树
【代码】复制二叉树。原创 2022-11-28 11:04:02 · 938 阅读 · 1 评论 -
中缀表达式
8.'-'优先级小于栈顶的 '*','*'输出,栈顶变为'(','-'入栈;10.')'入栈,输出栈中的 '-',消除一个'(',栈顶现在变成'/';17.')'入栈,栈顶'-'输出,消掉'(',此时栈顶变成'/';11.‘)’入栈,栈顶'/'输出,并消掉'(',符号栈为空;15.'-'优先级大于栈顶的'(',入栈;18.‘+’优先级小于'/','/'输出;3.‘/’优先级大于'(',入符号栈;6.'*'优先级大于'(',直接入栈;1.扫描到'(',进入符号栈;5.'b' 直接输出;4.'('直接入栈;原创 2022-11-23 13:59:03 · 347 阅读 · 0 评论 -
LeetCode.226. 翻转二叉树
LeetCode.226. 翻转二叉树原创 2022-11-12 11:21:56 · 224 阅读 · 0 评论 -
102. 二叉树的层序遍历
二叉树层次遍历原创 2022-11-11 19:14:04 · 210 阅读 · 0 评论 -
二叉树最大最小深度问题
3.当节点有且仅有一个子节点时,返回该子节点的深度+1;2.当节点为叶子节点时,返回 1;1.当节点为空时,直接返回 0;原创 2022-11-11 14:18:25 · 194 阅读 · 0 评论 -
二叉树的三种遍历方法
二叉树的三种遍历方法原创 2022-11-04 20:21:08 · 170 阅读 · 0 评论 -
LeetCode.1662. 检查两个字符串数组是否相等
LeetCode.1662. 检查两个字符串数组是否相等原创 2022-11-01 10:10:58 · 94 阅读 · 0 评论 -
LeetCode225. 用队列实现栈
队列实现栈原创 2022-10-29 21:07:20 · 99 阅读 · 0 评论 -
桶排序(箱排序)介绍
桶排序原创 2022-10-28 21:29:58 · 265 阅读 · 0 评论 -
LeetCode.1670. 设计前中后队列
LeetCode.1670. 设计前中后队列原创 2022-10-27 20:06:14 · 302 阅读 · 0 评论 -
LeetCode.622设计循环队列
LeetCode.622设计循环队列 C++题解原创 2022-10-27 18:27:01 · 158 阅读 · 0 评论 -
LeetCode19.删除链表的倒数第N个节点
中等难度的题,感觉做出来挺简单的。先遍历一遍链表,得到长度 length。然后考虑普通情况,删除倒数第n个,我们找到倒数第n+1个,然后就是普通的删除节点问题了。原创 2022-10-22 15:21:35 · 249 阅读 · 0 评论 -
单调队列入门之滑动窗口
我们引入一个单调队列,我们始终使队列的头元素为当前窗口的最小值(最大值同理,下面以求最小值为例),并保持我们的队列为单调递增,对数据数组每遍历一个元素就将这个元素从队列尾部开始比较,直至放在了队列的合适位置,此时队列的头元素就是最小值。1.当队列长度大于k了,为了更好地判断这种情况我们的队列存储的是数据数组中每个数据的编号,当i-b[x1] +1== k时就将队列头部弹出;我们如果使用最常规的方法对每一个窗口进行遍历,算法复杂度为O(n*k),显然在数据规定范围内不符合要求。原创 2022-10-19 19:48:55 · 175 阅读 · 0 评论 -
LeetCode.150.逆波兰表达式
就将栈的最上面两个数拿出进行运算 后 再将结果进栈 记住(栈顶元素永远在运算符号的右边)将数字用一个栈存储,每当遇到一个运算符的时候就将栈最顶上的两个元素拿出来运算(另外还有一个地方需要注意就是测试数据中有个结果超过了 int 的。范围,需要使用 long int。2.当是数字的时候直接入栈。1.先从左到右依次入栈。3.当是运算符号的时候。),并将运算结果入栈。原创 2022-10-17 20:26:56 · 272 阅读 · 0 评论 -
LeetCode155.最小栈
这道题的难点在于如何用常数时间找到最小值,所以我们不可以使用遍历的方法。原创 2022-10-11 12:35:02 · 220 阅读 · 0 评论 -
LeetCode.20 有效的括号
如果栈顶元素与右括号不匹配或者是出现右括号时栈为空时,可以直接判断匹配失败,并直接标记(此时出现了不同括号相互交错或者是先出现右括号而没有左括号的问题)。我们考虑用栈来储存三种左括号,每一次如果出现的是左括号就入栈,当出现右括号且与栈顶的左括号匹配时就看作匹配成功,将栈顶元素弹出;当最后栈为空且没有被标记时,可以认为匹配成功。1.左右括号数量不匹配;3.左右括号的位置不对;2.不同括号相互交错;原创 2022-10-10 23:56:47 · 414 阅读 · 0 评论 -
直接选择排序
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到完成。选择排序不管原始序列是否顺序逆序,都需要遍历数组才能找到峰值元素,比较操作均为 n(n - 1) / 2 次;注意:交换次数比冒泡排序少多了,由于 交换操作 所需CPU时间比 比较操作 所需的CPU时间多,n值较小时,选择排序比冒泡排序快。选择排序(Selection sort)是最简单的一种排序方法,它的时间复杂度为。...原创 2022-08-29 20:55:00 · 193 阅读 · 0 评论 -
数学建模快速资料链接(自用)
SPSS 变异系数进行数据差异性分析。模糊评价模型 灰色预测模型 PDE 模型。1.2016五一C题。原创 2022-08-21 16:10:37 · 150 阅读 · 0 评论 -
Latex基本使用
剩下的符号中,~是带子,#用在宏定义中,&用于表格对齐,而_表示数学模式的下标,我们也将会在后面的章节中陆续遇到。除了在数学模式中表示减号,符号-在LATEX正文中也有多种用途单独使用时它是连字符(hyphen);西文的省略号(ellipsis)使用\ldots或\dots命令产生,相比直接输入三个句号,它所略微拉开的间距要合理得多。虽然可以接受,但它们一般用在数学公式中,其文本形式的效果不好或有错,一般并不使用它们。注意LATEX并不会忽略以符号命名的宏前后的空格,所以在它前后都不要加多余的空格。....原创 2022-07-26 16:44:10 · 3060 阅读 · 0 评论 -
更新Windows11后无法使用Windows安全中心的解决方案
最近更新win11后发现Windows安全中心不能打开,提示我在商店下载,但是商店没有。原创 2022-07-22 14:24:56 · 3963 阅读 · 0 评论 -
Linux 学习笔记
DAY 01Shell :Shell是一个程序,它接收由键盘输入的命令并将其传递给操作系统(简称系统)来执行,由「命令行界面」(CLI) 和「图形界面」(GUI)组成。也是一门脚本语言,支持交互模式和非交互模式。交互模式下,接收键盘输入的命令。非交互模式下,从文件读取一连串的命令并执行,此文件称为 shell 脚本。(目前最流行的 shell 程序是 bash)终端:终端 (terminal) 是用户与操作系统用户界面 (shell) 进行交互的设备。终端和 shell 需要配套使用,打开终端即运行 she原创 2022-07-10 22:51:16 · 235 阅读 · 0 评论 -
《网络是怎样连接的》读书笔记(一)
整书目录:1.网址中的"www"只是Web服务器上的一种命名 ,是World Wide Web的缩写,它不是一个协议的名字,而是Web的提出者最早开发的浏览器兼HTML编辑器的名字。2.互联网中常见的几种URL(统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。): 浏览器要做的第一步工作就是对URL进行解析: 在这里介绍一原创 2022-07-05 12:54:54 · 703 阅读 · 0 评论 -
LeetCode.206反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表LeetCode.206反转链表思路是将每一个节点的 next都指向它的前一个节点 ,我们使用三指针(其实就是双指针)。第一个指针pre指向当前节点的前一个节点,第二个指针cur指向当前节点,第三个指针next指向当前节点的后一个节点。然后将三个指针整体向后移动。class Solution { public ListNode reverseList(ListNode head) { if(head == .原创 2022-05-23 09:32:10 · 114 阅读 · 1 评论 -
LeetCode83. 删除排序链表中的重复元素
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。83. 删除排序链表中的重复元素思路:用两个节点来标记位置,一个标记上一个节点,另一个标记当前的节点,当当前节点值和上一个节点值不一样时,令 head.next = 当前的节点,然后更新当前节点和上个节点;当当前节点与上个节点一样的时候,移动当前节点:cur = cur.next;代码:class Solution { public ListNode deleteDupli.原创 2022-05-22 20:42:02 · 352 阅读 · 0 评论 -
LeetCode237.删除链表中的节点
请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。来源:力扣(LeetCode)https://leetcode.cn/problems/delete-node-in-a-linked-list思路:由于不知道节点前面的节点信息,所以常规的删除方法我们是不能使用的你可以将子节点的值赋给该节点,然后令子节点指向孙节点。class Solution .原创 2022-05-22 19:28:33 · 94 阅读 · 0 评论 -
LeetCode.21. 合并两个有序链表
果然我对链表还是十分的不熟悉,很多时候写着写着就卡了,过然还要多练习才行将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。leetcode21.合并两个有序链表思路还是比较简单的,那就是创建一个新的链表,然后依次比较两个链表的数,谁更小就先放进去。有个细节可以注意一下那就是最后如果有个链表遍历完了,另一个可以直接接上去,不需要在再遍历了。最后的答案是:/** * Definition for singly-linked list. * pub.原创 2022-05-17 15:17:29 · 162 阅读 · 0 评论 -
LeetCode.203. 移除链表元素
最近好忙啊,先是人工智能要交一个研究报告,然后我的JAVA暑期实训又来了,JAVA实训是做一个养老系统,听说要完成起码3000多行代码。今天抽空写一道 leetcode吧给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。列表中的节点数目在范围 [0, 104] 内leetcodt.203移除链表元素很不喜欢用指针,所以我写链表题之后可能是用JAVA。先放一个JAVA链表基本的构造: public cl.原创 2022-05-17 00:33:23 · 211 阅读 · 0 评论 -
JAVA错题好题笔记(一)
我是大一的一名科班学生,已经学习java两个月,现在差不多 java 入门部分都已经学完了,所以我打算每天在牛客上练习10道入门的 java 题,并在这里记录一些我不怎么会,或者一些记得不太清楚的题。1....原创 2022-05-12 17:19:49 · 260 阅读 · 0 评论 -
LeetCode.11. 盛最多水的容器
跟有道接雨水的题很像,不过这个比那道题简单很多题目如下:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。LeetCode.11. 盛最多水的容器第一眼感觉是双指针,但是不知道怎么移动两个指针,想了很久,还是不会写,然后就看了一下官方题解,结合自己的理解,写下了这篇文章。首先这种找两个位置的题肯定是.原创 2022-05-11 16:29:03 · 342 阅读 · 0 评论 -
LeetCode.345. 反转字符串中的元音字母
WA了很多次才过。。。自己太蠢了。。。题目如下:给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。LeetCode.345. 反转字符串中的元音字母讲一下我的思路:这题的代码有点像二分模板中的一部分,定义两个指针,L指向头,R指向尾,在两个指针没有碰撞的情况下,L向右搜索,搜到元音停止;R向左搜索,搜到元音停止。然后交换两个元音元素(用swap() 函数),然后令R–,L–,从下一个元.原创 2022-05-11 14:05:06 · 296 阅读 · 0 评论 -
LeetCose.125. 验证回文串
非常简单的一道题啊题目如下:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。LeetCode.125验证回文串讲一下思路:首先我们可以用一个新的空字符串 a 来接收转换后的字符串,有一点要注意:转换大小写的函数:...原创 2022-05-10 19:43:50 · 88 阅读 · 0 评论 -
LeetCode.167. 两数之和 II - 输入有序数组
今天学习了一下碰撞指针的用法,就写了这道经典的题目题目如下:给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 inde.原创 2022-05-10 17:24:59 · 207 阅读 · 0 评论 -
88. 合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 nleetcode.88复杂度为 O((n+m.原创 2022-05-10 10:54:25 · 207 阅读 · 0 评论 -
LeetCode.75. 颜色分类
此题就是“荷兰国旗问题”,题目如下:给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。题目链接思路一:最先想到的肯定是排序算法,快排和计数排序。快排代码class Solution {public: void sortColors(vector<int>& nu原创 2022-05-09 14:26:37 · 105 阅读 · 0 评论 -
LeetCode.80. 删除有序数组中的重复项 II
这是26.删除有序数组中重复项 的加强版,允许每一个元素出现两次,其实思想都是一样的,具体可以去看我的这篇文章:26.删除有序数组中重复元素给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成来源:力扣(LeetCode)链接先判断特殊情况:当 nums.size() <= 2 时可以直接返回数组大小;其它情况时,一开始.原创 2022-05-09 09:48:48 · 430 阅读 · 0 评论 -
LeetCode.27移除元素
给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。LeetCode.27移除元素方法一:两个指针同时指向 nums[0],快指针记为 k ,慢指针 记为 m ,快指针扫描数组,如果不满足就跳过,否则,令nums[m++] = nums[k],最后返回 m。代码如下:...原创 2022-05-09 09:27:41 · 375 阅读 · 0 评论 -
LeetCode.26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。来源:力扣(L原创 2022-05-05 23:45:41 · 105 阅读 · 0 评论 -
双指针入门:寻找目标数
题目描述:给定一个严格单调递增的数组,求数组中不同位置的数A,B,使得它们的和为M,输出所有满足条件的数对。 while(i < j){ if(a[i] + a[j] == target) cout << i << " " << j << endl; if(a[i] + a[j] < target) i++; if(a[i] + a[j] > target) j++;}原创 2022-05-05 23:02:23 · 149 阅读 · 0 评论 -
数组元素的目标和
这是最低级的版本的目标和,特点为两个数组具有单调性并且元素不重复题目如下:给定两个升序排序的有序数组 A 和 B,以及一个目标值 x数组下标从 0开始。请你求出满足 A[i]+B[j]=x的数对 (i,j)数据保证有唯一解。具体链接:AcWing800.数组元素的目标和用暴力做法就是依次遍历,复杂度为O(n^2),而本题的数据范围在0~100000 之间,显然会超时,于是我们想到了双指针的做法。写一下核心代码: for(int i = 0,j = m-1;i < n ;i++).原创 2022-05-04 19:53:06 · 524 阅读 · 0 评论