自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode-- 反转字符串

思路很简单,就是首尾字母进行交换。但是要注意循环的次数,比如len=5,那么应该交换2次,len/2=2,所以取不到等号;当len=6时,len/2=3,此时就是0,1,2共三次交换。

2022-11-22 17:23:12 803 1

原创 LeetCode-- 3 的幂

假设这个数是3的幂次方,那么它应该满足的是,当不断的除以3,最后得到的数应该是1,所以就给它不断的除以3,看最后得到的数是否为1。

2022-11-22 17:11:36 764

原创 LeetCode-- 移动零

思路很简单,就是先遍历一遍,将不为0的项前移,按顺序进行前移j记录元素移动的位置到了哪里,这样剩下的就是要补0的地方,都补上0即可。

2022-11-22 16:40:23 888

原创 剑指 Offer II 076. 数组中的第 k 大的数字

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。输入: [3,2,1,5,6,4] 和 k = 2。先放代码在这里,等理解透彻了再写思路。

2022-11-20 17:08:44 598

原创 剑指 Offer II 018. 有效的回文

思路很简单,就是遍历一遍字符串,将其中的字母或者数字放入StringBuffer中,然后采用双指针进行判断,判断过程中,一旦有不相同的,就返回false即可,对于其他情况的考虑可以直接在最后返回true。

2022-11-20 15:36:28 639

原创 剑指 Offer II 068. 查找插入位置

题目有要求,要求时间复杂度为O(log n),所以采用二分查找,首先是如果能找到对应的元素,那么就直接返回下标即可,如果找不到,最后就直接返回left,left就是要插入元素的下标应该所对应的位置。

2022-11-19 17:44:17 817

原创 剑指 Offer II 034. 外星语言是否排序

给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;比如“apple”,“app”,这种情况就是false,直接返回false即可,但是前提是得等前几个字母比较完成,所以这个判断应该放在第二个的for循环之外。还有最后就是类似“app”,“apple”这种情况,一定会返回true,只要最后默认返回true即可。输出:true 解释:在该语言的字母表中,‘h’ 位于 ‘l’ 之前,所以单词序列是按字典序排列的。

2022-11-19 17:04:59 745

原创 Mysql主从复制出现connecting

首先解决Slave_IO_Running和Slave_SQL_Running是no的问题,原因是一台虚拟机是由另一台虚拟机复制过来的,就会导致uuid是一样的,需要先修改server的uuid,具体请查阅相关资料。4.在从库操作时,是否将相应的密码输入正确(一定看清楚主库那边设置的什么密码)主服务器的防火墙一定得是关闭的。1.网络问题,具体不太明白,但是本次没出现。5.文件的pos值等等与主库是否相对应。相应的其他操作也可以复制过来。3.授权方面,是否授权成功。只要把防火墙关掉就ok啦。

2022-11-17 08:56:48 2348

原创 LeetCode翻转字符

如果一个由 ‘0’ 和 ‘1’ 组成的字符串,是以一些 ‘0’(可能没有 ‘0’)后面跟着一些 ‘1’(也可能没有 ‘1’)的形式组成的,那么该字符串是 单调递增 的。我们给出一个由字符 ‘0’ 和 ‘1’ 组成的字符串 s,我们可以将任何 ‘0’ 翻转为 ‘1’ 或者将 ‘1’ 翻转为 ‘0’。定义新变量来不断更新翻转次数,ndp0记录的是将所有的0都反转成1需要的次数,而ndp1则记录每次的最小值。动态规划问题,其实就是要想整个字符串翻转最小,那么就要每个子串都翻转最小。输入:s = “00110”

2022-10-20 21:10:12 688

原创 LeetCode爬楼梯的最少成本

注意:数组大小应该是len+1,因为dp数组的0和1的值都是0,dp【1】就代表一层,如果一共三层,那么dp【3】就记录了到达楼顶的体力值。思路就是新建一个数组来存储到达该楼层所需要的体力值,初始时,dp【0】和dp【1】都是0,之后可以选择爬上一层或者两层。数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。,最后直接返回到楼顶的体力值就好。

2022-10-20 20:15:42 539

原创 牛客刷题日记之合并两个排序的链表

需要注意的是,一开始就进行判断,如果p1或者p2为null,那么就直接可以将p指向另一个不为null的链表的头节点。思路很简单,就是新建一个节点,由这个节点往后添加节点即可,期间不断比较两个链表所指节点的大小,看应该指向哪个节点。输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。最后将没有遍历到的节点统一挪过来,直接就让p.next指向没移动完的链表的当前节点就ok。,两者是不一样的,前者是将p的后一个节点赋值,后者是p向后走一个节点。然后就是比较节点值的大小;

2022-10-16 10:18:24 810

原创 牛客刷题日记之反转链表

以上面的为例,要翻转,就要首先找到头节点之前的那个节点,也就是让2节点在3的后面,假设2节点是cur,那就让cur.next.next(这个表示的是3节点后面那个节点)指向2节点也就是cur,然后将2节点的next指向null就好啦;如果要是对1和2节点进行翻转,方法和上面的一样,但是要注意,在翻转1之前,3和2已经是翻转过后的了,由于是递归调用,所以会逐层返回,其实每次都相当于两个节点进行翻转,只不过多次调用。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。输入:{1,2,3}

2022-10-16 09:05:08 765

原创 Mybatis入门基础之查询表中信息

在这里注意由于有好几个用户,有好几列,需要用到selectList而不是selectOne(会报错)。这个时候就可以将上一步的mapper source进行修改,改为当前的文件名即可。直接从官网下载相关代码就行,但是有些地方需要改动,改变数据库连接信息。先定义user类,以及相应的get,set方法。类里面的变量就和数据库表中的名称一样。最后新建一个class,里面编写main方法。先创建数据库mybatis,再建表。,因为最后返回的是字符串。先加载核心配置文件,获取。就是简单的sql语句啦。

2022-10-15 21:16:20 1803

原创 IDEA配置maven报错 cannot resolve plugin

在浏览解决问题的时侯发现,自己新建的project不是maven,而是maven模板,由于我的IDEA是2022.1版本的,所以有些地方不一样。在maven下新建一个repository文件夹作为本地仓库,之后从云端下载的相关文件会下载到这里。之前看了好多文章,说是因为网络问题造成的,具体也不太知道,解决办法就是加镜像。Build System选择Maven,JDK选择自己对应的版本,我的是1.7。当所需要的文件在本地仓库中找不到时,就从云端下载到本地仓库中。就在下载的maven的conf中。

2022-10-13 22:23:28 5326

原创 LeetCode最大的异或

利用字典树进行解题。将每个元素转换成二进制位,从高到底依次表现在字典树上,然后对字典树就行搜索当遇到节点是0的时候,由于进行异或操作,下一个最好选择1;当遇到节点是1的时候,由于进行异或操作,下一个最好选择0;

2022-10-11 09:31:53 573

原创 LeetCode乘积小于 K 的子数组

当在某个区域的时候,子数组的乘积的值是小于k的,但是随着右侧的j的移动,乘积增大,此时要判断乘积和k的关系,当在保证i

2022-10-10 15:45:36 530

原创 LeetCode数组中和为 0 的三个数

先对数组进行排序;在第一次循环中,如果取到了和之前的i一样的值,就跳过,也就是continue;第二次循环里面,对于j的操作和上面一样,但是要注意,当i和j是同样的值时,这种情况当然也是成立的,应该考虑,只需要加一个判断条件,j>i+1即可,就可以将i,j对应元素值相同的情况考虑进去。(例如,i和j都是-1的时候,在最终的答案中也是一种情况)

2022-10-09 22:13:03 792

原创 LeetCode字符串中的所有变位词

由于每次在字符串s中寻找的都是长度为p的某些字符,所以可以想到滑动窗口。定义两个数组sc,pc,大小都是26,当遇到某个字母时就将其对应数组值加1。sc存储在当前窗口下的某些字符对应的字母个数,pc存储字符串p的相应字母个数,pc数组不变,作为后续比较的基础

2022-10-08 09:58:07 672

原创 LeetCode二维子矩阵的和

采用求前缀和的方法,新建一个sum数组,sum数组与matrix行数相同,但是列数多一列,用来存储前面元素的加和。这样就可以得到每行的sum值分别对应前面几个值的加和,当要计算例如红色矩阵里面的第一行时,只需要用右上角右侧的元素的sum减去左上角元素的sum值即可。

2022-10-07 22:16:59 588

原创 LeetCode实现前缀树

boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true;boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);插入字符串时,从根开始,子节点存在,移动到子节点,处理下一个字符;子节点不存在,创建新子节点,移动到子节点上。查找前缀:从根开始,查找,如果子节点存在就移动到子节点;// 返回 True。

2022-10-07 17:54:29 509

原创 LeetCode岛屿的最大面积

对于每一个小方块而言,去搜寻它的上下左右四个方向去寻找和它同为1并且相邻的方块,记录相应个数,最后取最大值。深度优先搜索:1.由于岛屿的设定是一定得是1,所以可以先增加一个判断条件,当值是0的时候就可以直接返回0。(1)由于要考虑到数组越界问题,所以当边界的元素搜索到边界以外的元素时需要返回0,这个时候其实就是数组下标越界的时候。

2022-10-07 16:05:27 187

原创 C51单片机串口调试助手控制心形灯

在pc端的串口调试助手中发送1,LED全亮;发送2,LED全闪烁;发送3,LED1~LED17流水;发送4,LED17-LED1流水。大致过程就是先将单片机中SBUF的值取出到receiveData,表示数据已经被接收,然后清除接收中断标志位(如果不需要在pc端显示的话,就不用再将数据发送回去。直接先手动清0,取出SBUF中的数据即可。再将取到的数据送入SBUF发送出去,等到数据发送完成,清除发送完成标志位。然后发送2,可以看到灯先灭后亮再灭,达到一个闪烁的效果;发送3和4,分别进行相应的流水。

2022-10-07 11:22:33 1400 1

原创 C51单片机流水灯

在灯按下k1进行逆时针流水之后,如果流水的时候k2按下,那就要跳出当前循环进行顺时针流水,所以也要时刻检测k2是否为0;灯和按键都是,当给一个低电平才会亮,才会有接通;流水的方式采用的是循环移位,根据情况判断是左循环移还是右循环移。

2022-10-06 21:23:21 2676

原创 LeetCode排序数组中只出现一次的数字

二分查找。由于是有序数组:在要找的元素下标的左侧:nums【i】=nums【i+1】时,i一定是偶数;在要找的元素下标的右侧:nums【i】=nums【i+1】时,i一定是奇数。

2022-10-01 18:29:58 292

原创 LeetCode从根节点到叶节点的路径数字之和

深度优先搜索。对于遍历到的节点:如果根节点是null,直接返回0(定义sum的时候应该定义在这个语句的下面,否则存在节点值为null的情况的时候会报错)。如果遍历到的节点是叶节点,就直接返回sum即可(sum已经计算过上面节点的和以及已经加上了当前节点的值)。如果遍历到的节点有左孩子或者右孩子,那就递归调用接着往下深度搜索。

2022-09-29 21:34:26 122

原创 LeetCode最小时间差

分析可得,最小值可能是两个相邻的元素的差,例如10:59,11;00,就是两者之差等于1;也可能是开头和结尾的差,但此时,如果两者之间的差值大于12h的话,就要用到1440-两者之差,例如00:00,23:59,应该是相差一分钟,此时用1440减去两者分钟数的差值得到的就是正确的值。

2022-09-28 19:16:29 316

原创 LeetCode每日温度

这个解法比较巧妙的一点就是在栈里面的元素一定是从栈顶开始递减排列,这样每当遇到比刚进入栈要大的元素就会将相应的元素弹出,而且他们的下标之差也是它们之间距离的天数,也就是题目所求的答案。用两个for循环解决,每次的cur就是已经入栈的值,在搜索看即将入栈的值是否有大于它的,有的话,记录到ans数组,跳出当前循环,cur取下一个元素。如果要进入栈的元素小于已经在栈里面的元素,加入栈,直到最后元素遍历一遍之后,如果未弹出栈的就置为0.由于【2,50】还是大于【0,30】,【0,30】出栈,天数是2。

2022-09-27 10:53:56 462

原创 LeetCode单词长度的最大乘积

将每个单词所含的字母通过位运算存储到一个数组中,共有26个字母,用0~25表示,当遇到某个字母时,修改相应的位,由于每个单词不含相同的字符,所以每个字母之间互不影响,例如如果字母是a,就把第0位设置为1,存储到mask数组中;然后就比较当两个单词所对应的mask数组值,如果两者相与值为0,那就更新ans的值为二者单词长度的乘积。

2022-09-26 11:05:28 96

原创 LeetCode回文子字符串的个数

先找出回文中心,然后再向两边进行扩展,如果扩展过程中两个指针所指的元素相等时就说明找到了一个回文子串。注意:单个字符当然也要算作在内。

2022-09-26 09:23:41 381

原创 LeetCode粉刷房子

当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。costs[1][2] 表示第 1 号房子粉刷成绿色的花费,以此类推。输入: costs = [[17,2,17],[16,16,5],[14,3,19]]解释: 将 0 号房子粉刷成蓝色,1号房子粉刷成绿色,2 号房子粉刷成蓝色。请计算出粉刷完所有房子最少的花费成本。

2022-09-25 21:53:58 122

原创 LeetCode二叉搜索树中的中序后继

利用二叉搜索树的性质解决。对于某个节点来说,如果存在右子树,那么所要求的结果就是**右子树里面的最左侧的节点(也就是中序遍历在该节点之后遍历到的)

2022-09-25 21:09:15 317

原创 LeetCode往完全二叉树添加节点

首先想到的就是层序遍历,利用层序遍历找到符合条件的父节点,查看它的左孩子和右孩子,如果左孩子为null,就新添加节点作为它的左孩子,如果左孩子不为null,右孩子为null,就添加其右孩子节点。

2022-09-25 19:19:50 257

原创 LeetCode二叉树剪枝

首先要将题目分析对,题目的意思是,当某个节点值为0,并且其左孩子为null,且右孩子也为null时才会进行剪枝。节点 node 的子树为 node 本身,以及所有 node 的后代。遍历的时候,先递归遍历其左子树,再递归遍历其右子树。如果某个节点是null,那就直接返回null即可。

2022-09-23 21:51:19 324

原创 LeetCode二叉树的右侧视图

层序遍历,不过就是要在每层遍历完成之后判断最后一个元素,也就是在while循环的时候用len来判断是否是最后一个元素,每经过一次while,其实就是一个元素出队列,当len为0时,也就是最后一个元素出队列,此时就记录到ans中;这一点对于根节点也照样适用。给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

2022-09-23 21:07:32 124

原创 LeetCode二叉树每层的最大值

采用广度优先搜索(层序遍历)解决问题。层序遍历实现过程类似于队列,遍历完当前节点后将其左孩子以及右孩子依次加入队列,这样就能保证出队列的时候对于每一层都是从左往右;而且每次遍历到一个节点的时候,都这样做,直至遍历到最后一层

2022-09-23 19:33:10 392

原创 LeetCode二叉树最底层最左边的值

利用深度优先搜索,每遍历一层就将高度加1。另外还需要记录height的变化,用height记录当前遍历的节点的变化,需要和curHeight进行比较,令curHeight存储高度,一直是最大的,curVal记录相应节点值。

2022-09-23 10:57:42 380

原创 LeetCode变位词组

题目的关键点就在于统计每个字符出现的次数,可以将每个字符以及字符出现的次数作为map集合的key。2.将元素的每个字母以及其出现的次数进行拼接作为map集合的key,方便后续判断是不是变位词。4.map集合的key就是上面的key,value就是对应的list集合的值,1.对于每一个strs中的字符串,在count数组中存储其每个字母的个数,作用:如果存在相应的key则返回其对应的value,否则返回给定的默认值。注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。

2022-09-23 09:53:13 143

原创 LeetCode重排链表

1.需要两个指针,一个指向就是从0开始,另外一个指向list中的最后一个元素。3.每次进行链表节点的构建时,进行i++或者j–,移动指针寻找下一个节点的值。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。4.当构建完毕之后,链表结尾的指针应该指向null。输入: head = [1,2,3,4]2.链表构建完毕的条件:i和j相等时。输出: [1,4,2,3]

2022-09-22 17:16:02 343

原创 LeetCode只出现一次的数字

将所有元素转换成二进制,然后对每一位进行相加,对3取余(如果不是最终答案的元素,每个数字出现三次),结果得到的数就是最终答案的二进制位。所以首位是(1+1+1+1)%3=1,第二位是(0+0+0+1)%3=1。先遍历nums数组,对元素进行计数,并将结果记录到map集合中。

2022-09-22 10:48:41 172

原创 LeetCode二进制加法

定义carry为每一位运算的结果,要先判断某一位是否存在,不存在就补0,然后carry进行计算,而在进行计算时用到的是数值,要将char类型转换成int,减去‘0’即可。给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。

2022-09-21 19:09:44 292

云计算技术实验报告3.8

购置私有云,通过了解百度云的购买方式了解相关术语

2022-03-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除