- 博客(38)
- 收藏
- 关注
原创 MySQL
用途相同:两者都用于存储日期和时间的组合值,通常包括年、月、日、小时、分钟和秒。格式相同:它们的格式通常是 YYYY-MM-DD HH:MM:SS。存储相同:在许多数据库系统中,它们都可以存储毫秒级别的精度。Datetime 通常用于需要存储绝对时间且不涉及时区转换的场景,比如记录事件的发生时间、预约时间等。Timestamp 更适用于需要记录和比较时间戳的场景,尤其是当数据在不同时区的系统之间传输时,如记录最后修改时间、创建时间等。
2024-07-01 21:15:31 339
原创 代码随想录第29天|贪心算法part3
首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈每个加油站的剩余量rest[i]为gas[i] - cost[i]从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置。
2024-06-16 14:09:06 601
原创 Linux命令
命令同样可以查看文件内容,但是more支持翻页,如果文件内容过多,则可以按页展示(按空格),按q退出。路径2表示移动出的地方(如果目标不存在,则进行改名)如果不填路径(参数),则默认列出当前目录的所有文件。表示以易于阅读的形式来列出文件大小(混合h使用)如果不写路径,则回到用户的home目录。路径1表示被移动的对象(文件或文件夹)如果填路径,则列出路径下的所有文件。参数表示要删除的文件或文件夹路径。就是列出根目录下的所有文件。表示自动创建不存在的父目录。路径1表示被复制的对象。路径2表示复制出的对象。
2024-06-15 20:16:16 516
原创 代码随想录第28天|贪心算法part2
遍历每个位置,更新能到达的最大边界,如果当前遍历到的位置是之前所能跳跃到的最大位置且该位置所能跳跃的长度为0,且当前位置不为右边界的话,说明只能呆在该位置到不了右边界,返回false即可。
2024-06-12 10:57:09 477
原创 代码随想录第27天|贪心算法part1
先给孩子和饼干排序,每次选取一个最大的饼干给一个最大胃口的孩子,直到饼干分完或者遍历完孩子或者换一种想法,从小到大遍历饼干,每次分配一个饼干给小朋友,能给index就++
2024-06-07 19:01:01 1655
原创 代码随想录第26天|回溯part6 不需要搜索整棵树的回溯&二维搜索
难题,自己写的代码没过,但我认为逻辑没有问题正确的方法应该是使用一个map记录某个点到另一个点的机票数,类似于used数组的作用,但是如果使用map记录,因为map本身是有序的,所以在遍历的时候,第一个满足条件的一定是最小的路径。终止条件就是字符串数比票数多1的时候。这里返回值使用bool类型,当找到第一个符合条件的时候,直接返回true就行,然后它会一直返回给上层,直接退出函数,此时res是找到的第一个符合条件的路径,又因为map是自然有序的,所以res内就是答案。
2024-06-06 20:36:09 329
原创 代码随想录第25天|回溯part5 通用的去重法:set
中等题这个题给出的实例很有陷阱性,之前的题是通过排序来对于相同树层的元素去重,而本题是求非递减子序列,如果排序了那就已经是自增子序列了,达不到题目的要求。看图可以看出,对于一个集合[4,7],如果之前选择了7,那么在后面的7就不必选择了,因为如果选择了前面的7之后,一定递归到了包含了选择后一个7产生的所有情况比如[4,7,6,7,9]选择前面的7则有[4,7,7,9] [4,7] [4,7,9] [4,7,7]
2024-06-05 17:54:31 374
原创 代码随想录第24天|回溯part4 寻找切割点
寻找切割点,但是需要注意的是,切割点(即.号)只有三个将需要拼凑的值先放进一个数组里,等满足条件后再将其拼成字符串go代码。
2024-06-04 16:44:10 386
原创 代码随想录第23天|回溯part3 组合与分割
即:因为在排序后,相同的数都会挨在一起,如果当前数和上个数相同的话,那么在递归的过程中,如果上一个数没被用到,那么当前数肯定是一种重复的情况,因为这两个数相同,肯定是先使用前一个数的,而如果上一个没用到,则表示是已经递归过上一个数的所有情况并回溯了,现在递归下一个数的,所以需要跳过重复的这个数。因为同一树层,used[i - 1] == false 才能表示,当前取的 candidates[i] 是从 candidates[i - 1] 回溯而来的。返回条件就是,当切割点超过串的长度时,说明已经找到一种。
2024-06-03 17:44:27 365
原创 代码随想录第22天|回溯part2 组合总和III&电话号码的字母组合
当组合的数量为k就判断和,并且返回。在枚举的时候可以进行剪枝,如果总和已经超过了n,那么就没必要继续递归下去了。
2024-06-01 12:38:46 369
原创 代码随想录第20天|二叉搜索树续
自己想的:首先是参数:使用它给出的函数即可终止条件,遇见null节点返回如果当前节点值小于左边界,则其左侧子树全需要删除(因为更小),然后我们可以通过返回节点的方式,进行一种删除的操作(即给某节点赋值左右节点的时候使用递归函数,这样我们可以通过return的条件改变节点的左右孩子),之后再返回递归右子树的结果(因为右子树的节点不一定满足在范围内)如果节点值大于右边界,则右子树删除,操作类似.迭代法。
2024-05-30 20:13:26 246
原创 代码随想录第19天|二叉搜索树题型
一种是对于所有二叉树的通用解法从根节点开始往下搜索,搜索到的第一个节点的值在p,q的值之间,那么它一定是最深的公共祖先。
2024-05-29 18:47:35 379
原创 代码随想录第17天|最大二叉树&合并二叉树&二叉搜索树
这题和昨天写过的:使用中序后序序列构建二叉树 类似只需要使用前序遍历构建,通过最大值将数组划分为左数组和右数组,再以该最大值构造节点,以左数组和右数组递归地构造子树。
2024-05-27 16:01:39 412
原创 代码随想录第15天|平衡二叉树&二叉树的所有路径&左叶子之和
递归法:这题虽说是深度,但是还是要求左右子树的高度,因为如果使用前序遍历,在没有遍历到空节点的时候是不知道该节点的深度的,没有遍历到需要return返回的条件就进行判断的话,是无法知道左子树或右子树的深度的,所以需要用。
2024-05-24 14:57:52 413 1
原创 代码随想录第14天|二叉树操作2
如果使用其实是求的根节点的高度,但是根节点的高度就是二叉树的最大深度。如果使用前序遍历,那么求的就是深度,因为是从根节点开始统计深度的,而不是从叶节点开始。
2024-05-24 12:46:26 350 1
原创 Go的学习日记
具体来说,执行go mod init helloworld命令将创建一个名为helloworld的新模块,并生成一个go.mod文件,该文件记录了当前项目的模块路径(通常是您的代码托管服务的地址),以及任何依赖的模块及其版本。一旦执行了go mod init,您就可以使用go mod命令来管理您的项目的依赖关系,例如使用go mod tidy来清理不再使用的依赖项,或者使用go mod vendor来将依赖项复制到您的项目中的vendor目录中。如果右操作数的对应位是 0,则保留左操作数的对应位。
2024-05-23 21:58:08 729 1
原创 代码随想录第13天|二叉树操作
基本算法,每次把一层的节点放入栈中递归的三要素确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定单层递归的逻辑: 确定每一层递归需要处理的信息。
2024-05-22 19:32:38 566 1
原创 代码随想录第十一天|滑动窗口&堆
用双向队列维护一个单调队列(对头为最大值或最小值)在本题中,是维护一个单调递减队列(对头最大),因为题目要求最大值。标准代码创建了一个类专门用来表示单调队列。
2024-05-20 16:02:04 521 1
原创 代码随想录第九天|栈&队列 1
定义两个栈s1(输入栈)和s2(输出栈)获取队首的操作:如果输出栈空的话,把输入栈依次弹出,再放入s2中,这个时候s2的栈顶就是原栈的最后一个元素,即队列的第一个元素。如果输出栈不为空,直接从输出栈获取栈顶即可。
2024-05-19 12:32:52 539 1
原创 代码随想录第八天|字符串-KMP
haystack称为文本串,needle称为模式串构建next数组的操作对于例子通过next数组(前缀表)我们可以发现,当模式串里的f和文本串的b不相同时,应该将模式串中的指针j回退到索引为2,即j=next[j-1]可以看到前缀表中表示以当前字符为结尾的串的相同前缀和后缀长度,如next[1],表示aa这个串的最长相同前缀和后缀的长度为1:就是a.那么当f不匹配。
2024-05-17 15:10:43 634
原创 代码随想录第六天|哈希-续
自写:把前两个数组的组合出的和,用map1记录对应的出现次数,同理,后两个数组的组合出的和也记录出现次数。首先遍历map1,则和为0的情况总数为:map1[key]*map2[-key].
2024-05-14 17:19:43 595 2
原创 代码随想录第五天|哈希表
自写:分别为两个串创建两个map,然后判断两个map内的key和value是否相同即可。有点耗空间创建一个数组当作map即可,然后让第一个串先用map记录,对应的字符数量+1,在遍历第二个串的时候再让对应的字符数量-1,如果最后的数组里每个字母对应的元素数不为0,则说明这两个串不是异位词。
2024-05-13 15:15:52 731 1
原创 代码随想录算法训练营第二天|数组双指针&滑动窗口&模拟
可用数组中绝对值的最小值和其左边一个索引,为两个指针的起始点进行遍历(平方值从小到大)也可以从数组的左右端点进行遍历,这两个数的平方值中必有一个为最大值,这样依次遍历到的是平方值递减的数组,所以我们对于创建的数组res从后往前存入,这样就实现了res的递增。
2024-05-10 21:45:26 830
原创 代码随想录算法训练营第一天
关于是在哪个if条件里设立边界的问题,只需要关注当target=num[mid]的时候,l或者r更新后是在target的左侧还是右侧,根据这点就知道边界赋值的句子应该写在哪。对于,当相等时,r = mid - 1,r在target左边,所以是左边界。return rb;lb = r;// 因为rb和lb都是不包含target的边界,所以它们之间的间隔必定大于1,否则无法包含target。
2024-05-08 13:52:25 1414
原创 最大的子矩阵
最大子矩阵Problem Description给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。Input输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。Output对于每组数据,输出一个整数,表示子矩阵的最大和。Samp
2020-07-03 21:14:12 257
原创 打印沙漏
纯新人如有做的不好还请见谅#include<stdio.h>using namespace std;int main(){int a;char c;cin>>a;cin>>c;int i;int t;if(a<=1)cout<<c; else{for(i=1;;i++){ t=i*i; if...
2020-03-17 16:06:36 99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人