自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 4.2---合并区间 ,轮转数组

一开始的思路是先排序,然后进行遍历,在一个while里面判断如果:这段代码在主要调试的时候,无法判断排序完的最后一个子区间 ,例如{{1,4},{2,5},{8,10},{15,18},{2,6}},在排序完是:{{1,4},{2,5},{2,6},{8,10},{15,18}},当i是4时,temp数组保存的是{8,10},不满足while的条件,所以直接加入list中,然后下一次循环i+1等于5,不满足for的条件所以退出,导致无法判断排序完的最后一个子区间{15,18}。

2025-04-02 16:53:05 385

原创 4.1最大子数组和(贪心算法、动态规划)

本质:选择每一阶段的局部最优从而达到全局最优。对于本题来说,当每一阶段的和都取大于0,那么总体的和最大。所以我们可以用一个变量cnt来累加和,当加上nums[i]后cnt小于0时,就将前面的子数列抛弃,cnt清零,从i+1开始继续更新cnt。还有一些细节问题:比如cnt是用来记所有和的,那么cnt的最大值需要再用一个变量sum来得到;并且如果序列都为负数,那么结果就会等于0(因为cnt会等于0,而负数都小于0);所以我们定义的sum要初始化为最小负数。

2025-04-02 10:42:11 321

原创 3.31---滑动窗口与子串

主体思路是采用滑动窗口法,也就是如果窗内不包含扫描到的某元素,那就把该元素加进窗内,并且长度加一,继续下一个元素的扫描判断,但如果窗内包含该元素,那就将窗内该元素删掉,(但只是删掉,index没变,所以下一轮扫描还是该元素)然后在下一轮while里面再加进来(相当于更新了一下重复元素的位置)一些小想法:如果要输出最长字串,可以在max赋值前判断这时的窗长window.size是不是max,如果是,新定义一个list用来存储窗里的数据,最后,输出这个list。

2025-03-31 21:57:08 364

原创 3.28---双指针法及单调栈拓展

主体思路:先将这个数组排序,这样方便后续操作,然后用一个 map来存储信息,当键名为数组元素,对应的值有0和1,0表示该元素没有比它小的上一个元素,1表示有;判断思路是,先判断map中是否有和它重复的元素,重复则直接到下一次循环,不存储重复元素;如果没有重复元素,就判断它是否有比它小1的元素,如果有说明连续,就将值设置为1,并max作为计数器开始记录连续次数,如果没有比它小1的连续元素,说明连续断了,将其值设置为0表示不连续,然后将之前没断的max值赋值给list存储,重新清空max用于下一次连续的计数。

2025-03-28 21:34:08 925

原创 3.27---数据结构之B树和B+树

左小右大进行比较,如果插入位置没有出现上溢出(大于最多的元素个数),无需调整直接插入,如果出现上溢出,将m/2上取整(如果m=3,那么[m/2]=2)处的元素上移到父节点(可以是根节点,但如果根节点也上溢出就要把[m/2]当作新的根节点来创建)处,原来[m/2]左边的元素变成左分支,原来[m/2]右边的元素变成右分支。B+树常被用作数据库中的索引结构,叶结点每个元素都包含指向对应记录存储地址的指针,所以结点内的元素又被称作关键字(key),通过key包含的指针就可以找到数据库需要的数据内容。

2025-03-27 22:10:42 407

原创 3.21---字符串题目(KMP算法)

注意substring函数左闭右开。

2025-03-24 11:03:50 902

原创 3.19学习笔记---Mybatis,JDBC

Java程序操作数据库,现在主流的方式是:Mybatis。MyBatis是一款优秀的 **持久层** **框架**,用于简化JDBC的开发知识点:采用MVC模式,M称为模型,也就是实体类。用于数据的封装和数据的传输。V为视图,也就是GUI组件,用于数据的展示。C为控制,也就是事件,用于流程的控制。

2025-03-21 14:50:22 950

原创 3.19学习笔记---四数之和及字符串题目

主要思路:三数之和是放两个指针left,right然后再一次i遍历,所以我设计的四数之和是三个指针left,middle,right,然后两次遍历。先判断前面两个数之和sum1,再去找后面两个数之和有没有等于target-sum1的,有的话将这四个数放入一个list里,然后再判断结果集合res里面有没有这个list,有的话就不添加进res里。但是超出时间限制,算法还是需要再优化一下代码随想录里面的思路:和三数之和一样,只是多了一个for循环,然后剪枝条件不一样。

2025-03-19 22:28:59 341

原创 3.18学习笔记---MySQL多表查询,索引,事务

当我们调用这句sql语句查询员工表(17行)和部门表(5行)中的数据:会发现查询结果很多,即17*5=85条记录。插入知识点:这种出现85条记录的现象叫笛卡尔积。但我们不想要这么多数据,就需要用条件筛除一些结果:--隐式内连接(只有id号相同才是正确的结果)

2025-03-18 22:47:05 422

原创 2025.3.17学习笔记---数据库开发,MySQL

通用语法:SQL语句可以单行或多行书写,以分号结尾;可以使用空格/缩进来增强语句的可读性;MySQL数据库的SQL语句不区分大小写。单行注释:-- 注释内容(中间有空格)或 # 注释内容(MySQL特有)多行注释: /* 注释内容 */SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL分类全称说明DDL数据定义语言,用来定义数据库对象(数据库,表,字段)DML数据操作语言,用来对数据库表中的数据进行增删改DQL数据查询语言,用来查询数据库中表的记录DCL。

2025-03-18 21:40:09 1012

原创 2025.3.13---哈希表:四数相加,赎金信,三数之和

该题的主要思路是:如果用四个for循环遍历的话时间复杂度会非常大,所以拆分一下,两个数组一起遍历。具体来说就是先遍历数组12,将12所有元素相加和sum1的情况以及出现的次数记录在map中;然后遍历数组34,也是计算34所有元素的相加和,找出有没有等于-sum1的情况(这样四个数组相加就等于0了),一旦找到一个情况,cnt就等于cnt+map.getValue(sum1)。

2025-03-16 21:00:17 832

原创 3.14学习笔记---请求,响应,分层解耦

HTTP协议的解析是需要Tomcat的,但是Tomcat是一个Servlet容器,只支持Servlet规范。所以SpringBoot进行web程序开发时,它内置了一个核心的Servlet程序 DispatcherServlet,称之为 核心控制器。DispatcherServlet 负责接收页面发送的请求,然后根据执行的规则,将请求再转发给后面的请求处理器Controller(个人感觉像一个翻译官),请求处理器处理完请求之后,最终再由DispatcherServlet给浏览器响应数据。

2025-03-14 17:40:01 690

原创 2025.3.13---Maven学习和SpringBoot入门

SpringBoot两大特点:简化配置,快速开发。2.1 HTTP协议。

2025-03-13 20:36:01 831

原创 问题:maven项目导入依赖出错

在idea中创建了maven项目,但是在pom.xml中导入依赖时,dependencies标红 ,也试过导入不同版本的依赖都是一样的问题。1,local repository的配置和settings.xml中配置的仓库地址正确。3,也试着删除了repository对应的mvn_repo文件夹然后reload也不行。idea版本是2024.1,安装的maven是3.6.1。有没有友友知道到底是为什么啊。所以应该不是兼容性问题;借鉴这篇笔记开始一一排查。

2025-03-12 21:40:09 279

原创 2025.3.12学习笔记---哈希表(数组拓展题目,快乐数)

一开始的思路是:先用nums1在nums2里面找交集,找完交集之后再和nuns1找交集。但是这样有个问题就是比如某一个数组1有重复的数字1,但另一个数组2只有一个1,那么在判断条件(2中是否包含1)就会一直成立,会重复添加,比如下面这个案例:所以这个思路也是不正确的,借鉴了一下官方解题思路,是使用了哈希表来记录某元素的出现次数,并把其对应关系写在map里面。一开始先找到短的那个数组,让短数组在长数组中找交集会更加快捷,所以判断数组长度,然后让nums1为短数组,nums2为长数组;

2025-03-12 19:10:09 342

原创 3.11学习笔记---哈希表(字母异位词拓展题和数组交集)

一、字母异位词分组哈希表加两个for暴力解法(但超出时间限制了,有没有友友帮忙看看哪里还可以优化或者有其他好的方案)主体思路是采用哈希表nums来记录每一个字符是否已被添加到List当中,已被添加的置1,没有置0。

2025-03-11 23:03:06 381

原创 3.10学习笔记---哈希表题目:字母异位词

这道题的思路是:设置一个从字母“a”到字母“z”一一对应的哈希表(长度为26),遍历s字符串,每当扫出其中一个字母时,就在该字母(索引)对应的数组元素自增一(记录该字母在s字符串中出现的频次)。set 和multiset底层实现都是红黑树,红黑树的本质是平衡二叉查找树(头节点左侧都比它小,右侧都比它大),所以key是有序的,但也不能修改,只能增删;暴力解法就是两个for循环,一个正向外循环,一个正向内循环 ,遍历t找到s[i]就可以退出内循环,,外循环加一,直到全部找出。HashMap是基于哈希表实现的。

2025-03-11 10:37:40 306

原创 2025.3.9---链表题目

一开始的思路是,先反转链表,再按照给的n按顺序删除对应该点的位置,但是注意这里结束之后还要再把链表反转回去,感觉用双指针法的话有点太冗杂,所以采用递归法试试,在重写翻转链表方法时又出现问题,输出是空链表,对照了一下问题,发现在写reverse函数正确返回值是。然后看了代码随想录的解析,发现误区在于,我构想的移动是死移动,所以按照实例1来说直接在第一个节点就卡住了,但是正确的思路是就让快慢指针自己按照自己的速度移动,有环的话,它们总能在某一处相遇(问题是这个点不一定是入口,所以只能用来判断是否有环)

2025-03-09 21:18:51 709

原创 2025.3.6学习笔记---反射,链表题目

总结原因是因为执行完三步操作(还没到cur = cur.next),这时链表元素是[2,1,3,4],如果cur = cur.next,则cur目前指向的元素是1,node1 =3 ,node2 = 4,temp = null,然后进入三步操作,此时cur指向4,接着cur=cur.next就指向空了,循环结束,所以最后结果只有14两个数据。(1)调用forName方法:Class clazz1 = Class.forName("com.itheima.reflectdemo.Student");

2025-03-07 11:05:18 467

原创 2025.3.5学习笔记---链表

addAtIndex主要思路:首先判断index是否有效,如果无效直接return ,如果有效定义一个for循环,最大循环数小于index,在循环体内用curr=curr.next完成指针的移动,直到移到index(最后一次循环)退出循环后,令newNode.next = curr.next;cur是找不到上一个节点的,但是cur.next可以,所以我们首先来判断cur以及cur.next是否为空,不为空再判断cur.next.val是否等于目标值,如果相等,则令。,即完成头节点的删除操作。

2025-03-05 22:04:35 374

空空如也

空空如也

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

TA关注的人

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