- 博客(19)
- 收藏
- 关注
原创 二叉树-算法小结
红黑树就是一种二叉平衡搜索树,这两个树不是独立的,所以C++中map、multimap、set、multiset的底层实现机制是二叉平衡搜索树,再具体一点是红黑树。
2025-04-13 23:47:08
676
原创 字符串与栈和队列-算法小结
为什么不用快排呢, 使用快排要将map转换为vector的结构,然后对整个数组进行排序, 而这种场景下,我们其实只需要维护k个有序的序列就可以了,所以使用优先级队列是最优的。此时我们需要一个队列,这个队列呢,放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最大值是什么。栈的目的,就是存放遍历过的元素,当遍历当前的这个元素的时候,去栈里看一下我们是不是遍历过相同数值的相邻元素。从栈里弹出的元素是倒序的,所以再对字符串进行反转一下。使用优先级队列来对部分频率进行排序。
2025-04-13 23:44:29
418
原创 哈希表-算法小结
在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。依然还是在数组中找到 abc 使得a + b +c =0,我们这里相当于 a = nums[i],b = nums[left],c = nums[right]。同理,std::map 和std::multimap 的key也是有序的。,std::map 和std::multimap 的底层实现是。map set 数组。
2025-04-13 23:41:36
377
原创 链表-算法小结
如果要删除倒数第n个节点,让fast移动n+1步,然后让fast和slow同时移动,直到fast指向链表末尾。为什么是n+1呢,因为只有这样同时移动的时候slow才能指向删除节点的上一个节点(方便做删除操作)让index1和index2同时移动,每次移动一个节点, 那么他们相遇的地方就是 环形入口的节点。在相遇节点处,定义一个指针index1,在头结点处定一个指针index2。3.需要确保在删除节点后立即更新指针,避免悬空指针的使用。,这样原链表的所有节点就都可以按照统一的方式进行移除。
2025-04-13 23:38:38
341
原创 数组-算法小结
___这样在查询区间和的时候只需要做一次减法操作,时间复杂度可以降到O(1) _ ]vector.size()空数组返回0,再减去一会溢出,变成一个很大的负数。快指针在旧数组中找非目标值,然后赋值给慢指针指向的新数组。思想 : 不断把区间二分为一,逼进目标值。当n为奇数时,最后会剩下一个中心点。预先计算并存储数组前i个元素的和。不处理最后一个元素,避免重复填充。滑动窗口( 长度最小的子数组)螺旋矩阵II (边界问题)双指针(有序数组的平方)使用前提 :有序数组。使用前提 :有序数组。
2025-04-13 23:36:08
153
原创 KMP算法
为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMPnext数组就是一个前缀表(prefix table)。要在文本串:aabaabaafa 中查找是否出现过一个模式串:aabaaf。首先要知道前缀表的任务是当前位置匹配失败,找到之前已经匹配上的位置,再重新匹配,此也意味着在某个字符失配时,前缀表会告诉你下一步匹配中,模式串应该跳到哪个位置前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串。
2025-03-23 23:08:48
986
原创 过滤器和监听器
Filter即过滤过滤器(Filter)是 Web 开发中用于拦截请求(Request)或响应(Response)的组件,能够在请求到达 Servlet 前进行预处理,或在响应返回客户端前进行后处理。![[Pasted image 20250318200401.png]]若是一个过滤器链,先配置先执行,响应时相反图片清晰展示了 Web 开发中过滤器链(Filter Chain)的工作流程,核心要点如下:通过实现一个叫javax.servlet.Fileter的接口来实现一个过滤器 接口的三个方法:
2025-03-20 00:51:36
425
原创 用户登入系统-servlet
简单项目可用注解,但 XML 仍是 MyBatis 的推荐实践。的核心文件,通过将接口方法与 SQL 绑定,简化数据库操作。是 MyBatis 实现 。MyBatis 通过 。
2025-03-18 19:20:31
1014
原创 JSP-初识
JSP(JavaServer Pages)是,允许在 HTML 页面中嵌入 Java 代码,用于生成动态内容提供静态内容(固定文本、图片等) 纯文本标签提供动态内容(数据实时生成) 支持嵌入 Java 代码控制器(Controller):处理请求逻辑 开发难度 直接操作 response.getWriter(),手动拼接 HTML 复杂视图(View):展示动态数据 直接编写 HTML + Java 代码,
2025-03-15 13:26:59
783
原创 文件的上传与下载-tomcat
告知浏览器响应体的数据类型(MIME 类型)。若设置为 text/html,浏览器会直接渲染 HTML;若设置为 application/octet-stream,浏览器会将其视为二进制流,触发下载行为。
2025-03-09 14:30:10
649
原创 Servlet-核心接口
ServeletRequest只有一个子接口,就是HttpServletRequest 既然只有一个子接口为何不将两个接口合并为一个接口呢。“请求转发” 通常指将接收到的请求(如网络请求、API调用等)从一个服务或节点传递到另一个服务或节点的过程。作用:将当前请求和响应对象转发到服务器内部的其他资源(如 JSP、Servlet 等)。由于浏览器默认打开的时候采用的字符集编码是ISO-8895-1格式的编码,该编码不支持中文。此时05和06不是一个请求,若让05和06是一个请求,使用请求转发。
2025-03-04 21:43:54
928
原创 Java笔记1
Win+R 输入cmdE:回车 切换到E盘 进入多级目录cd\查看当前路径 回退到盘符目录进入单级目录 -code省略 清屏回退上一级目录 退出命令提示符窗口。
2024-12-18 17:15:29
719
原创 Set与Multiset-笔记
64 set容器-自定义数据类型指定排序规则哔哩哔哩bilibili●set容器默认排序规则为从小到大,掌握如何改变排序规则●利用仿函数,可以改变排序规则//set容器排序public: //自定义比较函数compare1,重载“()”操作符it!= s.end();//允许插入重复值//允许插入重复值it!= s.end();return 0;##
2024-09-18 16:08:51
664
原创 深浅拷贝与拷贝构造函数
2.当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个成员的指针将指向同一个地址,当对象快结束时,会调用两次析构函数。当我们写下如下代码时,我们在内存中存储了一个简单数据类型的num,和一个复杂数据类型的obj1。那么问题就很明显了,值传递,会进行形参实例化,类类型实例化,会再调用构造函数,就会一直调用,因此结果就是无穷递归。), 故参数传递时,按简单类型的赋值拷贝,而不会有拷贝构造函数的调用(对于类类型).//当n发生变化时,num并不发生变化,所以num和n在栈中地址并不相同。
2024-02-21 02:04:52
1013
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人