- 博客(117)
- 收藏
- 关注
原创 Mysql -- 表的约束
理论上,上面的例子,我们不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有。auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。在公司中,需要一个员工管理系统,员工表中有2条信息,一个是身份证,一个是员工号,选择身份证作为主键,设计员工工号时不能有重复的,所以需要唯一键。在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键。
2022-09-06 21:08:44
1750
12
原创 Mysql -- 表的操作
create table users ( id int, name varchar(20) comment ‘用户名’,在以后,我们可能会修改某个表的结构,例如:字段名字、字段大小等。还会添加字段、删除字段等。这时我们就需要修改表。password char(32) comment ‘密码是32位的md5值’,passwold对应列的数据也都被删除了,所以要慎重。字符集、校验规则、存储引擎根据需求修改即可。可以发现插入新字段后对原来的数据没有影响。修改name,将长度改为30。将name列修改为姓名。
2022-09-04 11:05:46
1158
1
原创 Mysql -- 数据库库的操作
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。现在是已经删掉了,恢复语法:source + 你备份的地方。对数据库的修改主要指的是修改数据库的字符集,校验规则。比如我备份自己的test1数据库。下面看校验规则对数据库的影响;数据库内部看不到对应的数据库。实例:创建名为g1的数据库。.
2022-08-31 20:39:18
1066
8
原创 leetcode19. 删除链表的倒数第 N 个结点
这道题和链表中的倒数第K个结点解法差不多,用快慢指针。因为会涉及到操作头结点,所以我们用虚拟头结点,这样会方便很多。
2022-08-25 09:40:17
864
原创 leetcode.15 --- 三数之和
看了英雄哥的代码加的细节:可以先将答案数组先开好空间,如果数组个数小于3或者第一个数大于0,最后一个数小于0直接返回,如果第1个数和最后一个数都是0,则返回3个0.首先想到的方法就是暴力解法,直接3层循环,肯定是不行的,
2022-08-23 17:00:59
872
原创 leetcode.7 --整数反转
整数反转题目链接:https://leetcode.cn/problems/reverse-integer/题解:代码如下:class Solution {public: int reverse(int x) { int r = 0; while(x) { if(r > 0 && r > (INT_MAX - x % 10) / 10) return 0;
2022-05-31 18:31:27
80
2
原创 leetcode2.两数相加
两数相加题目链接题解:跟前面写过的高精度加法一样的,这里可以new一个虚拟头结点,就不用特判当链表为空的情况了。设t为进位,l1的每个结点+l2的每个结点+进位t,每个结点需要添加的值是(l1+l2+t)%10,t /= 10,当2个链表走到完且进位也处理完循环结束。代码如下:class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* dumm
2022-05-30 10:00:28
98
2
原创 数组模拟队列
模拟队列int q[N];存元素int hh = 0;//队头int tt = -1;//队尾题目链接代码如下:#include<iostream>using namespace std;const int N = 100010;int q[N],hh,m;int tt = -1; int main(){ cin>>m; while(m--) { string s; int x;
2022-05-29 09:33:40
97
1
原创 数组模拟栈
模拟栈数组模拟栈应用在算法题中,特点是快。我们需要一个数组,和栈顶元素的索引,数组的末尾插入删除是很快的。题目链接代码如下:#include<iostream>#include<string>using namespace std;const int N = 1000010;int st[N];int tt = -1;//栈顶元素的索引int m;int main(){ string s; int x; cin>>m
2022-05-29 08:20:59
67
原创 数组模拟双链表
模拟双链表初始化在a的右边插入结点x在a的左边插入结点x删除结点a实战例题初始化这篇是模拟单链表的数组模拟单链表,这次偷个懒,0表示头,1表示尾,相当于2个哨兵。void init(){ R[0] = 1; L[1] = 0; index = 2;}在a的右边插入结点x代码如下://在a的右边插入xvoid insert(int a,int x){ e[index] = x; R[index] = R[a]; L[index
2022-05-27 10:15:10
165
4
原创 力扣392---判断子序列
判断子序列双指针的应用双指针的应用题目链接:点击直达题解:双指针解决动图演示:代码如下:class Solution {public: bool isSubsequence(string s, string t) { int m = s.length(), n = t.length(); int i = 0,j = 0; while(i < m && j <n) {
2022-05-25 12:26:47
114
4
原创 离散化求区间和(C++)
离散化离散化例题实战离散化离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。也就是离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例题实战https://www.acwing.com/problem/content/804/题解步骤:a[N]存数据,s[N]存前缀和,vector < int > alls存数据离散化映射的下标,vector <pair<int,i nt >>add,query要加上c和询问
2022-05-24 10:40:33
243
5
原创 差分(前缀和的逆运算)
差分一维差分差分数组的作用实战例题二维差分一维差分差分:是前缀和的逆运算差分数组:有了数组b,就可以在O(n)得到数组a差分数组的作用问题:输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。暴力的解法是遍历区间[l,r],每次再进行m次操作,时间复杂度是O(mn),若给的数据很多,可能就过不掉了。下面用差分数组进行优化,数组a是数组b的前缀和,我们对数组b的b[i]操作就会影响数组a的a[i]及后面
2022-05-22 17:09:54
221
1
原创 前缀和(一维和二维)
前缀和前缀和概念一维数组的前缀和一级目录前缀和概念前缀和概念:数组该位置之前的元素之和重点:在进行前缀和的运算时,下标从1开始,设数组的a[0] = 0例如:a[3] = {0 ,1 , 2 , 3}a[1]的前缀和: a[1]a[2]的前缀和:a[1] + a[2]…下标从1开始,边界好处理,且设为0不影响结果。前缀和的作用:快速求出数组中某段区间的和。一维数组的前缀和给定一个长度为n的序列,有m次询问,每次询问输入(l,r),求出每次的(l,r)区间的和。我们很快就可以想到
2022-05-22 09:36:35
142
2
原创 高精度加减乘除(C++)
高精度运算高精度+高精度高精度-高精度高精度*低精度高精度/低精度高精度+高精度实际上高精度就是说参与运算的数据和运算结果的范围,超出标准数据类型能表示的数据大小范围的运算。这个时候,如果要得到正确的计算结果,显然不能依靠普通方法实现了,需要使用高精度的计算了。重点:1.使用字符来存储数据2.将字符串从后向前存,因为加法可能有进位,数组在末尾是很容易插入数据的高精度加法题目链接,点击直达高精度-高精度高精度*低精度高精度/低精度...
2022-05-19 20:40:14
376
2
原创 【leetcode】剑指 Offer 50. 第一个只出现一次的字符(C++)
第一个只出现一次的字符题目链接:https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/题解:把字符串全部存进哈希表,查找哈希表,出现一次的返回即可,这道题没什么难度class Solution {public: char firstUniqChar(string s) { unordered_map<char,int> CountMap; for(au
2022-05-16 15:56:38
173
1
原创 【leetcode】剑指offer21 ---调整数组顺序使奇数位于偶数前面(C++)
调整数组顺序使奇数位于偶数前面首尾双指针快慢双指针首尾双指针题目链接:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/调整数组中奇数偶数元素的位置,我们可以想到双指针,左指针从左向右查找偶数,右指针从右向左查找奇数,然后交换。这个思想跟快排的思想一样,一个从左边查找比key(一般选数组左边的值)大的,右边找比key值小的,交换完后,数组就是有序的。动
2022-05-15 08:44:36
215
4
原创 【leetcode】剑指offer04 ---二维数组的查找(C++)
二维数组的查找暴搜优化暴搜题目链接:https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/直接暴力解法,遍历二维数组,找到等于target的返回true,没找到返回false,注意数组为空的情况代码如下:class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int ta
2022-05-14 12:52:47
325
6
原创 【leetcode】剑指offer03 ---数组中重复的数字(C++)
数组中重复的数字3种解法数组中重复的数字数组中重复的数字题目链接:https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/题解一:排序+遍历数组代码如下:class Solution {public: int findRepeatNumber(vector<int>& nums) { sort(nums.begin(),nums.end()); f
2022-05-13 11:15:15
402
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人