- 博客(26)
- 收藏
- 关注
原创 sql常用语句
ALTER table stu add(classname varchar(100))2.修改列的数据类型 修改stu表的gender列类型为CHAR(2)Alter table stu modify gender char(2)3.修改列名 修改stu表的gender列名为sexALTER table stu change gender sex CHAR(2)4.删除列 删除stu表中的classname列ALTER table stu DROP classname5.修
2024-08-31 16:52:02
2292
原创 四十天Java八股文打卡训练营的蜕变之旅
过去的四十天,我参加的Java八股文语音打卡训练营不仅让我对Java语言有了更深入的理解,也极大地提升了我的编程技能和问题解决能力。每一天的学习都以语音打卡的形式开始,这种形式强化了我的学习责任感,也增加了学习的互动性。随着每一天的深入学习,我逐渐意识到,坚持这样的学习方式不仅让我在知识上得到了积累,更重要的是,在思维方式和解决问题的方法上也有了显著的提升。我现在看待问题的角度更加全面,解决问题的方法更加多样,编码的速度和质量都有了明显的提升。
2024-08-17 17:46:22
317
原创 蓝桥杯javaB组 矩形总面积
题目的意思是,在一个坐标系中给定两个矩形R1,R2,他们的状态可能是:R1 和 R2 没有重叠区域;然后计算两个矩形的总面积。这感觉就是一道数学问题,我们可以分别计算这两个矩形面积相加,如果他们有重叠部分则减去重叠部分的面积。两个矩形的重叠部分肯定是矩形,所以我们只需求出重叠矩形的长和高就可以了。简单画了一下重叠的状态,那么就可以求出来长和高了,length=Math.min(ax2,bx2)-Math.max(ax1,bx1),high=min(ay2,by2)-Math.max(ay1,by1);
2024-01-18 15:57:34
641
原创 蓝桥杯javaB组 数组分割
就可以了,因为如果总和为奇数,无论如何分割都会使,两个部分其中一个部分的和是奇数。这时想到了用动态规划来解决这道题目,那么肯定要定义dp数组,含义就是以nums[i]为结尾并且和为奇数和和为偶数两种,那么就需要定义一个二维的dp数组,我们假设让dp[0][i]表示以nums[i]为结尾并且和为偶数,dp[1][i]表示以nums[i]为结尾并且和为奇数,我们最后要求的是有多少种分割方法,其实我们可以把nums[i]理解为分割位置,那么只需要1+每次分割和为偶数求和就可以了,1表示的是空集的情况。
2024-01-15 15:46:51
530
原创 二叉树part2
其实反转二叉树就是交换节点的左右孩子,这道题用的是递归方法,第一步应该是确定参数和返回值类型,参数就是跟节点,返回值类型就是TreeNode,然后是确定种植条件,如果该节点为空则停止递归,然后就是确定单层递归的逻辑,首先我们需要选择一种方法来遍历二叉树,我用的是前序,后来看了卡哥的讲解之后画了图,发现前后都可以,但是中会导致某些节点会被交换两次。用的是迭代方式借助的是队列。如果我们将遍历的节点的值存入队列之后,我们怎么才能知道哪个节点和哪个节点是同一层呢?
2023-10-19 14:52:50
117
原创 栈与队列part3
那么我们就需要在poll的时候和add的时候来做条件的判断了,当我们在poll的时候我们要判断,当前要弹出的元素是否等于队列出口的值,如果相等则弹出,在add操作中,我们要循环判断,如果加入的元素比入口元素大,则弹出入口处的元素,知道要添加的元素前面都是比她大的元素即可。实现了这个单调队列之后,这道题就好写很多了,我们只需先将前k个元素存到res数组,然后依次遍历k到最后一个元素,反复调用poll,add,peek方法即可。那么这个维护元素单调递减的队列就叫做单调队列,即单调递减或单调递增的队列。
2023-10-18 16:12:41
95
原创 Day11:栈与队列(part2)● 20. 有效的括号● 1047. 删除字符串中的所有相邻重复项● 150. 逆波兰表达式求值
这道题主要是一共要三种不匹配的情况要搞懂,第一种是多了左扣号,就是在循环结束之后,栈不为空时的情况,一种是多了右括号,就是在循环还没结束时,栈就已经空了,最后一种情况是左右括号不匹配的情况,就是遍历的时候发现栈里的元素不匹配。其实就是遍历字符串,然后判断如果和前一位相同则pop操作,如果不相同则push操作,最后在反转一下栈里元素即可。遍历tokens,如果遍历到的元素不是算数运算符则将元素存入deq,如果遍历到运算符则要进行相应的操作,这里要注意,弹出的元素和操作元素对顺序应该是相反的。
2023-10-16 23:56:40
111
1
原创 Day10(栈与队列part1)栈和队列的互相实现:232;225
首先要熟悉一下栈和队列的性质,和方法。栈就是先进后出的结构,常见的方法有push()是入栈操作,pop()是移除并返回元素,peek()返回栈尾元素,队列的结构是先进先出,所以我们用栈来实现队列时则需要使用两个栈,in栈是负责进栈,out则负责出栈,我们首先将元素push进in栈里,此时我们要实现队列的pop操作,但栈的pop操作返回的是尾,而队列返回的是头,这时候我们需要自己构造一个方法来实现队列元素的反转,我们只需要pop(in)取出in中的每一个头元素然后依次push进out中即可。
2023-10-16 01:13:09
59
1
原创 Day9字符串part2:KMP算法
kmp算法其实就是一种应用于字符串匹配的算法,他的主要思想是当出现字符串不匹配时,可以一部分已经匹配的文本内容,可以利用这些信息做到避免从头匹配,kmp算法的精髓其实就是next数组,也就是前缀表,前缀表的作用是记录下标i之前包括i的字符串中,有多大长度相同的前缀后缀。还有一道题是重复的子字符串, 我看了视频讲解感觉懂了,但具体代码还是写不出来,可能要慢慢积累估计就懂了加油。2.处理前缀后缀不相同的情况;使用前缀表可以告诉我们匹配失败之后跳到哪里重新匹配。这个是力扣上28的题,也就是kmp的应用。
2023-10-12 00:08:37
113
原创 day8字符串part1 :344.反转字符串;541.反转字符串2;替换空格
这道题跟反转字符串的区别是每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符,刚开始做的时候没想到在循环条件里改,而是用if来判断也写了很多很多,后来看了视频明白了i每次跳2k就可以了,在循环里要有个判断,如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。如果剩余字符少于 k 个,则将剩余字符全部反转。如果满足大于等于k小于2k就rev前k个,直接continue是为了不走下面的,跟else类似。左旋:第一步先rev前n个,在rev剩余的,最后整体rev。
2023-10-09 14:43:16
98
1
原创 day7(hash表)● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
还是第一眼四层for,但学了hash表以后肯定不能当for哥了,首先数组不行,因为整数的范围太大,那么就考虑用map还是set,因为这题要返回等于零的数量,所以要用map,首先我们遍历A和B数组,将a+b的和出现的次数存入map,然后我们在遍历c和d数组,如果0-c-d在map中出现过,则取出value的值,最后用count来返回就可以了。
2023-09-27 00:58:24
52
1
原创 补发两数之和
因为这道题是要找和为target的两个目标值,并返回他们的下标,这个很关键,这个既要值,又要下标,所以想到用map。我们首先定义一个长度为2的整形数组ans来存放答案,接下来要创建一个HashMap来存储nums中的值和下标,我们需要用一个for循环来遍历数组nums,因为我们要的值temp是target-numsi。我们要判断temp是否存在于map中,如果找到了,就把i的值和key为temp的值存到ans中,跳出循环即可,若本次循环没找到,就把numsi的值和i存到map中,i++即可。
2023-09-26 13:13:20
57
1
原创 哈希表: 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
虽然以前在数据结构这个课里学过哈希表,但那时候也仅仅会的是理论知识,今天才真的做到了学有所用。哈希表的三种方式:数组,set,map。我们要知道什么时候要使用哈希表呢?那就是当我们要判断一个元素是否出现在集合中时。首先第一题有效的字母异位词,这个词听着确实很高级,但其实也就是判断两个字符串中出现的每个字符的出现次数是否相同。现说思路,因为两个字符串仅包含小写字母,要想到用数组,所以首先我们需要一个数组arr长度为26,从0-25存储从a-z每一个字符出现的次数。
2023-09-25 23:54:20
65
1
原创 补充day4
判断是否有环就是让快指针一次走两个,慢指针一次走一个,如果快指针和慢指针相遇了证明有环。2.环的位置,需要用数学公式来算,最后结论是从头节点出发的距离如果等于从相遇节点出发的距离,那么焦点就是环的位置具体我写的代码在下面。两个关键:1.是否有环;
2023-09-24 13:13:41
77
1
原创 代码随想录Day4(链表part2)● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
这里还是使用虚拟头节点,这样不需要考虑头节点这个特殊情况了。那该怎么(a,b)两两交换呢?首先我们要找到需要两两交换的前一个节点pro,先让pro指向b,然后让b指向a,最后让a指向b的下一个节点,这样除了我们自己设置的虚拟头节点以外,我们还需要记录三个节点,分别是fir,sec和thr,那么循环何时终止呢?当节点个数是奇数时,就是当我们的pro.next==null;偶数时则是pro.next.next==null。这样终止条件也分析出来了,pro节点在每一循环之后怎么移动呢?当然是向后移动两位。
2023-09-24 11:07:33
60
2
原创 补充day3
也是写了一遍就过了,其实这道题我感觉就是一定要搞懂我们自己定义的head是什么意思,head就是一个虚拟头节点,只要搞懂这个就没啥问题了。大早上的就是脑袋好使,
2023-09-23 09:07:44
129
1
原创 代码随想录Day3(链表part1) 203.移除链表元素 707.设计链表 206.反转链表
题目链接首先要明白链表元素移除的规则,假设要移除第x个元素,那么就要让x-1的next指向x+1具体的代码就是x-1.next=x-1.next.next;明白了这个这道题也就很好想了,也无非就是两种情况,移除的元素是头节点和不是头节点,如果移除的元素是不是头节点,那么按照之前说的移除操作就可以了,让x-1.next=x-1.next.next,如果移除头节点,因为头节点没有前一个节点,所以这种方法就不适用,具体的操作应该是将head=head.next;
2023-09-23 01:14:38
122
1
原创 代码随想录Day2(part2)977-有序数组的平方;209-长度最小的子数组;59螺旋矩阵II
题目链接我刚开始看这道题的时候就是想着先平方,然后在排序就有了下面的代码这应该就是暴力解法,时间复杂度也就是sort的时间复杂度为nlogn级别。当时我就只想到了这种解法,后来看了代码随想录的视频,也就恍然大悟了,因为这个数组是非递减顺序排列的,那么数组平方后的最大值一定是在两边,这时候就可以用两个指针来指向数组的两边,当然也要创建一个新的数组来存去排完顺序以后的数据,这样做完之后时间复杂度也就来到了n级别。
2023-09-21 19:40:56
316
原创 代码随想录Day1(数组part1) 704-二分查找;27-移除元素
题目链接其实读完题目我就在没带电脑的情况下用手机写了当时也没有想太多就直接跟着自己的逻辑写了一个,但后来看了随想录才发现有左闭右闭和左闭右开两个情况,我这个就是属于左闭右闭的情况,那么这两种情况说白了就是0~nums.length-1和0 ~nums.length。在通俗一点就是左边界和右边界的取值问题。这两种情况也就直接影响到while循环里的语句,如果是左闭右闭就是left小于等于right,另一种情况则是小于,如果还是不太清楚可以举个例子:数组为[1,2,4],target是3。
2023-09-20 16:21:42
503
1
原创 马里奥乘法表
#include<iostream>#include<cstdio>using namespace std;int main(){ cout<<" 马里奥牌子乘法表"<<endl; cout<<" ********"<<endl; cout<<" ************"<<endl; cout<<" ####......
2021-09-28 09:05:46
87
转载 计算机是如何存数
计算机的所有整数都是以补码的形式存储在计算机中的。整数的补码就是它本身;负数的补码是它除了符号位的位数取反加一。正数的补码等于原码,负数的原码等于反码加一,而反码等于原码符号位不变其余各位取反使用补码的原因:简化计算机基本运行电路,使加减法都能用加法的运行电路实现,用加法替代减法也就是让减去一个正数或加上一个负数可以用加上一个正数来替代。于是改变负数的存储形式,存储成可以直接当成正数来相加的形式,这种形式就是补码。补码是怎么把减法变成加法的?用时钟理解减法变加法这是一个身边的例子,当你校
2021-09-25 15:37:18
382
原创 20210924
#include<iostream>#include<cstdio>using namespace std;int main(){ cout<<123+345<<endl; cout<<123-345<<endl; cout<<123*345<<endl; double a=123; double b=345; double c; c=a/b;...
2021-09-24 19:35:03
83
原创 2021-09-24
#include<iostream>#include<cstdio>using namespace std;int main(){ cout<<"v v"<<endl; cout<<" v v "<<endl; cout<<" v "<<endl;return 0;}
2021-09-24 19:30:59
52
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人