- 博客(65)
- 问答 (1)
- 收藏
- 关注
原创 c++ 经典服务器开源项目Tinywebserver如何运行
【然后把刚刚打开的main.cpp和这个数据库文件对照着改】注意是改main.cpp的user和password!修改完成后,把之前编译的server文件删掉,再次在终端执行以下代码重新编译运行,就OK了。打开浏览器,输入localhost:9006,不出意外的话应该可以成功看到demo了。1、第一次直接运行sh ./build.sh,应该会出现这样的报错。运行下面命令,安装mysql动态库,再次运行后mysql报错消失。【打开main.cpp后先放着不动,等下要用】正确运行时状态:(不会退出)
2023-11-14 15:03:40
204
原创 如何在Ubuntu里安装MySql
注意,出于安全原因,在控制台中键入的任何内容都不会显示。在其他情况下,MySQL 数据库包安装完成后,mysql-secure-installation 实用程序将自动启动。通常,在未执行任何配置的情况下在 Ubuntu 上全新安装 MySQL 后,访问服务器的用户将使用身份验证套接字 (auth_socket) 插件进行身份验证。接下来,会看到一个提示,询问你是否删除所有匿名用户,输入 Y 表示是。你可以通过运行以下命令来验证安装结果,该命令将输出系统中所安装的 MySQL 版本和发行版。
2023-09-26 17:35:13
35
原创 968. 监控二叉树
这道题目首先要想,如何放置,才能让摄像头最小的呢?从题目中示例,其实可以得到启发,我们发现题目示例中的摄像头都没有放在叶子节点上!这是很重要的一个线索,摄像头可以覆盖上中下三层,如果把摄像头放在叶子节点上,就浪费的一层的覆盖。所以把摄像头放在叶子节点的父节点位置,才能充分利用摄像头的覆盖面积。
2023-06-26 15:45:28
823
原创 56. 合并区间,738.单调递增的数字
这几道题都是判断区间重叠,区别就是判断区间重叠后的逻辑,本题是判断区间重贴后要进行区间合并。所以一样的套路,先排序,让所有的相邻区间尽可能的重叠在一起,按左边界,或者右边界排序都可以,处理逻辑稍有不同。按照左边界从小到大排序之后,如果intervals[i][0]
2023-06-26 00:49:43
606
原创 452. 用最少数量的箭引爆气球,435. 无重叠区间,763.划分字母区间
为了让气球尽可能的重叠,需要对数组进行排序。那么按照气球起始位置排序,还是按照气球终止位置排序呢?其实都可以!只不过对应的遍历顺序不同,我就按照气球的起始位置排序了。既然按照起始位置排序,那么就从前向后遍历气球数组,靠左尽可能让气球重复。从前向后遍历遇到重叠的气球了怎么办?如果气球重叠了,重叠气球中右边边界的最小值 之前的区间一定需要一个弓箭。
2023-06-26 00:35:37
515
原创 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
本题思路其实比较好想了,如何可以让数组和最大呢?贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。局部最优可以推出全局最优。那么如果将负数都转变为正数了,K依然大于0,此时的问题是一个有序正整数序列,如何转变K次正负,让 数组和 达到最大。那么又是一个贪心:局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1 比 反转5得到的-5 大多了),全局最优:整个 数组和 达到最大。
2023-06-26 00:15:04
824
原创 122.买卖股票的最佳时机II ,55. 跳跃游戏 ,45.跳跃游戏II
给你一个整数数组 ,其中 表示某支股票第 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。示例 1:输入:prices = [7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第
2023-06-24 01:53:32
274
原创 455.分发饼干 ,376. 摆动序列 , 53. 最大子序和
为了满足更多的小孩,就不要造成饼干尺寸的浪费。大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。可以尝试使用贪心策略,先将饼干数组和小孩数组排序。然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。
2023-06-24 01:47:51
511
原创 332.重新安排行程 , 51. N皇后 ,37. 解数独
这道题目有几个难点:一个行程中,如果航班处理不好容易变成一个圈,成为死循环有多种解法,字母序靠前排在前面,让很多同学望而退步,如何该记录映射关系呢 ?使用回溯法(也可以说深搜) 的话,那么终止条件是什么呢?搜索的过程中,如何遍历一个机场所对应的所有机场。
2023-06-24 01:23:49
360
原创 491.递增子序列, 46.全排列, 47.全排列 II
这个递增子序列比较像是取有序的子集。而且本题也要求不能有相同的递增子序列。这又是子集,又是去重,是不是不由自主的想起了刚刚讲过的90.子集II(opens new window)。就是因为太像了,更要注意差别所在,要不就掉坑里了!
2023-06-24 01:15:03
592
原创 93.复原IP地址 ,78.子集 , 90.子集II
切割问题就可以使用回溯搜索法把所有可能性搜出来在for (int i = startIndex; i < s.size(); i++)循环中 [startIndex, i] 这个区间就是截取的子串,需要判断这个子串是否合法。如果合法就在字符串后面加上符号.表示已经分割。如果不合法就结束本层循环
2023-06-24 00:48:29
585
原创 216.组合总和III,17.电话号码的字母组合
理解本题后,要解决如下三个问题:数字和字母如何映射两个字母就两个for循环,三个字符我就三个for循环,以此类推,然后发现代码根本写不出来输入1 * #按键等等异常情况
2023-06-24 00:20:18
307
原创 77. 组合
回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等
2023-06-24 00:10:42
618
原创 669. 修剪二叉搜索树 ,108.将有序数组转换为二叉搜索树 , 538.把二叉搜索树转换为累加树
本质就是寻找分割点,分割点作为当前节点,然后递归左区间和右区间。分割点就是数组中间位置的节点。那么为问题来了,如果数组长度为偶数,中间节点有两个,取哪一个?取哪一个都可以,只不过构成了不同的平衡二叉搜索树。
2023-06-24 00:02:08
431
原创 235. 二叉搜索树的最近公共祖先 ,701.二叉搜索树中的插入操作 ,450.删除二叉搜索树中的节点
在有序树里,如果判断一个节点的左子树里有p,右子树里有q呢?因为是有序树,所有 如果 中间节点是 q 和 p 的公共祖先,那么 中节点的数组 一定是在 [p, q]区间的。即 中节点 > p && 中节点 < q 或者 中节点 > q && 中节点 < p。在遍历二叉搜索树的时候就是寻找区间[p->val, q->val](注意这里是左闭又闭)那么如果 cur->val 大于 p->val,同时 cur->val 大于q->val,那么就应该向左遍历(说明目标区间在左子树上)。
2023-06-23 23:57:26
224
原创 530.二叉搜索树的最小绝对差 ,501.二叉搜索树中的众数 ,236. 二叉树的最近公共祖先
给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。11。
2023-06-23 23:47:46
456
原创 654.最大二叉树 , 617.合并二叉树 , 700.二叉搜索树中的搜索 , 98.验证二叉搜索树
给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。11思考过程与知识点:构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。参数传入的是存放元素的数组,返回该数组构造的二叉树的头结点,返回类型是指向节点的指针。题目中说了输入的数组大小一定是大于等于1的,所以我们不用考虑小于1的情况,那么当递归遍历的时候,如果传入的数组大小为1,说明遍历到了叶子节点了。那么应该定义一个新的节点,并把这个数组的数值赋给新的节点,然后返回这个节点。
2023-06-20 20:02:27
307
原创 513.找树左下角的值,112. 路径总和 113.路径总和ii, 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构
版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。等于目标和的根节点到叶节点路径如上图所示。(1 --> 2): 和为 3。(1 --> 3): 和为 4。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是二叉树的中序遍历,
2023-06-20 16:49:43
202
原创 110.平衡二叉树 , 257. 二叉树的所有路径 ,404.左叶子之和
版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。给定一个二叉树,判断它是否是高度平衡的二叉树。的左右两个子树的高度差的绝对值不超过 1。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。,返回所有左叶子之和。
2023-06-19 13:52:16
396
原创 104.二叉树的最大深度 , 111.二叉树的最小深度,222.完全二叉树的节点个数
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。给定一个二叉树,找出其最大深度。叶子节点是指没有子节点的节点。叶子节点是指没有子节点的节点。返回它的最大深度 3。,求出该树的节点个数。
2023-06-19 13:48:41
719
原创 102. 二叉树的层序遍历 ,226.翻转二叉树 ,101.对称二叉树 2
版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。(即逐层地,从左到右访问所有节点)。,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。
2023-06-19 13:42:09
683
原创 144.二叉树的前序遍历,145.二叉树的后序遍历,94.二叉树的中序遍历
版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。给你一棵二叉树的根节点。给定一个二叉树的根节点。
2023-06-19 13:37:09
598
原创 239. 滑动窗口最大值,347.前 K 个高频元素
版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。滑动窗口每次只向右移动一位。,请你返回其中出现频率前。
2023-06-19 13:31:18
668
原创 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。
2023-06-19 13:28:32
650
原创 232.用栈实现队列,225. 用队列实现栈
版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(myStack.empty();// 返回 False。
2023-06-19 13:22:45
157
原创 459.重复的子字符串,28. 实现 strStr(),剑指Offer 05.替换空格
版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。可由子串 "ab" 重复两次构成。中的每个空格替换成"%20"。请实现一个函数,把字符串。
2023-06-19 13:15:38
624
原创 344.反转字符串, 541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。编写一个函数,其作用是将输入的字符串反转过来。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。
2023-06-19 13:09:31
737
原创 454.四数相加II , 383. 赎金信 ,15. 三数之和 , 18. 四数之和
今天day07应该不会再用O(n^4),也就是四个for去做这道题了吧哈哈哈。题目要求找A[i] + B[j] + C[k] + D[l] = 0,我们同样可以先求部分和,再通过结果为0来反推查找。把四个数组分为两队,A和B分为一队,C和D分为一队。
2023-06-19 13:06:00
681
原创 242.有效的字母异位词,349. 两个数组的交集,202题. 快乐数,1. 两数之和
思考历程与知识点:如果一个字母一个字母的找,也就是暴力,用两个for的话时间复杂度是O(N^2);我们可以换个思路,a~z一共26个字母,我们开一个长度26的数组 f,把每个字母出现的次数记录下来, a 就是 f [0], b 就是 f [1],c就是 f [2] , 依此类推,第二个字符串也是同样开一个26的数组 f2 [ ]。最后只需要对比两个数组里的次数是否都相同就可以了
2023-06-12 20:29:13
429
原创 2023年第十五届四川赛区ACM真题及官方题解
先给大家看看今年的比赛氛围: 。今年四川的ACM在都江堰举办。因为比赛时间很紧张,所以没来得及去公费旅个游哈哈,不过题目很棒,志愿者效率很高,比赛中途还给我们发了KFC,结束后的滚榜也很刺激,友友们的队伍名一个比一个好听,体验好极辽。好,那接下来,就开始我们快乐的做题之旅吧!
2023-06-04 23:45:10
4073
1
原创 24. 两两交换链表中的节点, 19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交
这样,现在的老大就是那个替身,而真正的头结点和其他小弟一样,都跟在后面,这样就可以用同一种方法进行调换了。删除倒数第n个节点。当你到达需要删除的车厢时,你并不知道你已经到了,因为只有知道全长才能知道倒数第n个是哪一个,找完全部后才知道一共有多少个车厢。如果一个节点一个节点找,那就是上面的线路挨个节点选一遍,假设是交点,然后每个都要在下面从头到尾找一圈,那复杂度就是O(N^2),实在是太大了。双指针:设置两个指针,中间隔着n个距离,当第二个指针到达最后一个节点时,第一个指针就是倒数第n个的距离,很简单的。
2023-06-02 22:51:10
471
原创 203. 移除链表元素,707.设计链表,206. 反转链表
链表就像一串小火车,有一节一节的车厢,每个车厢都叫做一个节点。单链表:每个链表车厢里有两个内容,一个放的是真正的数据,另一个放的是下一节车厢的编号。双链表:每个链表车厢里有三个内容,一个真正数据,一个下一个车厢的编号,还有一个上一节车厢的编号,这个是单链表所没有的。循环链表:链表小火车的车头和车尾连接起来。
2023-05-30 00:45:55
1813
空空如也
目前只会c和c++,有必要再学java或者其他语言吗
2022-08-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人