自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode238.除自身以外数组的乘积

给你一个整数数组nums,返回 数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请且在O(n)时间复杂度内完成此题。

2025-09-16 22:00:59 298

原创 Leetcode380.O(1)时间插入、删除和获取随机元素

实现valtruefalsevaltruefalse你必须实现类的所有函数,并满足每个函数的时间复杂度为O(1)。

2025-09-16 21:35:32 384

原创 leetcode274.H指数

给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h。如果 h 有多种可能的值,h 指数 是其中最大的那个。

2025-09-11 19:19:55 1427

原创 leetcode122.买卖股票的最佳时机2

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。

2025-09-11 17:30:11 194

原创 leetcode121.买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。

2025-09-11 16:42:40 156

原创 leetcode189.轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

2025-09-11 16:20:34 322

原创 leetcode169.多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。

2025-09-11 15:31:57 212

原创 leetcode.80删除有序数组中的重复项2

给你一个有序数组nums,请你删除重复出现的元素,使得出现次数超过两次的元素,返回删除后数组的新长度。不要使用额外的数组空间,你必须在并在使用 O(1) 额外空间的条件下完成。

2025-09-11 14:32:52 319

原创 删除有序数组中的重复项

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。

2025-09-11 12:00:10 116

原创 leetcode27.移除元素

快指针 fast从 0到 nums.length - 1遍历每个元素。元素的顺序可能发生改变。

2025-09-11 11:38:19 230

原创 合并两个有序数组

,说明这些元素是当前最小的,需要将它们复制到 nums1 的前端。这种方法的时间复杂度是O(m + n),空间复杂度为O(1)。最终,合并后数组不应由函数返回,而是存储在数组。指向 nums1 的最后一个有效元素(索引为。指向 nums1 数组的最后一个位置(索引为。指向 nums2 的最后一个元素(索引为。,以避免覆盖nums1中尚未处理的元素。个元素表示应合并的元素,后。中,使合并后的数组同样按。2. 从后向前比较和合并。,将较大的那个元素放入。解决这个问题的关键在于。

2025-09-11 11:29:46 175

原创 LeetCode 146.LRU缓存

一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。LRU基于局部性原理:若数据近期被访问,未来被再次访问的概率较高。LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的。,选择最近最久未使用的页面予以淘汰。的平均时间复杂度运行。

2025-06-10 17:07:28 743

原创 LeetCode 239. 滑动窗口最大值(单调队列)

题意就是求每个窗口内的最大值,返回一个最大值的数组,滑动窗口的最值问题。做法:维护一个单调递减队列,队头为当前窗口的最大值。每次窗口形成后,队头元素即位窗口的最大值。

2025-06-07 17:36:23 425

原创 跳跃游戏两则

举个例子,有nums = [2,3,1,1,4],初始我们在nums[0] = 2处,此时我们在该位置跳一次最远可以跳到nums[2],next更新为2。初始我们的cur也为0(cur == i),说明我们现在所在的位置是我们在上个位置能跳到的最远的下标,ans++,并更新cur = 2,意思是我们在目前位置i = 0处能跳到的最远下标为i = 2。当我们枚举i = 2的位置,前面操作同理,但是i = 2是我们在当前位置i = 0能跳到的最远位置,所以我们可以跳到该位置,然后更新cur = next。

2025-02-25 16:46:02 369

原创 逻辑运算短路现象记录

在这道题中,首先要做的是去重,很容易想到的一种去重方法是,将原数组进行排列后,如果数组的第一个元素还是大于0的,则这个数组不会有这样的一个三元组,它们的和为0。第二种去重是要注意这种情况[a, a, ...], 如果本轮a和上轮a相同,那么找到的b,c也是相同的,所以去重a。,这是一个非法的数组访问,会导致数组越界错误(例如在 C/C++ 中可能触发运行时错误,如段错误)。的判断失败(例如数组越界导致程序崩溃)时,后面的。这里就涉及到了逻辑运算中的短路现象:当。

2025-02-04 18:12:24 234

原创 Spring MVC - Controller的创建与使用

可以发现,我们之前的控制器类方法中都有一个参数Model对象,放入Model对象的数据是请求范围的数据,默认跳转页面是以请求转发的形式跳转页面。可以直接加一个HttpSession类型的参数,用于获取当前会话对象,以操作当前会话对象。

2024-01-02 17:48:39 2162

原创 创建和配置Spring MVC框架构建Web应用

基于xml配置的项目结构图如下:可以发现,关于spring、spring mvc的配置文件统一放到src/main/resources/config下,web.xml放到src/main/webapp/WEB-INF下。src/main/java/com/qdu主要放controller包和service包。src/main/webapp下放网络的静态资源(src/main/webapp/static),src/main/webapp/WEB-INF放的除了web.xml还有jsp页面。

2023-12-27 13:52:59 1344

原创 了解AOP

思考:在一个教务系统中,以下哪些是主要业务逻辑,哪些是次要业务逻辑?

2023-12-16 17:04:03 263

原创 三种方法实现依赖注入

但是 byType 的自动装配存在一个很严重的问题,因为不是通过唯一的 id 来匹配,而是通过类型来匹配,所以容器中不能存在多个相同类型的 bean,否则会抛出NoUniqueBeanDefinitionException异常。注解,则使用反射实现注入。使用@Bean修饰的方法注册一个bean成为spring管理的bean,方法返回的对象成为Spring管理的bean。byName是按照名称自动装配,意思是要注入的属性的属性名和要注入的bean的id或name(别名)相同,即可实现按照名称自动装配。

2023-12-07 15:19:50 5012

原创 三种配置Spring程序的方法

在XML文件中使用bean标签,将其交给容器管理。

2023-12-05 23:58:15 244

原创 理解依赖注入

可通过bean标记的init-method属性指定初始化时要调用的方法可通过bean标记的destroy-method属性指定bean被摧毁前要调用的方法。

2023-12-05 17:53:32 390

原创 Spring 概述

框架,特指为解决一个开放性问题而设计的具有一定约束性的基础架构。在此架构上可以根据具体问题进行扩展和定制,添加更多的组成部分,从而更迅速和方便地构建完整的解决问题方案。框架,是一种可重用的设计,相当于一个半成品或者说模板,让使用者可以遵循框架的设计快速打造一个成品。

2023-12-04 17:50:19 161

原创 剑指 Offer 03. 数组中重复的数字

主要的思想是把每个数交换到与该数相等的索引的位置,即nums[i]==i,第一次遇到这个数就把它交换到与该数相等的数组下标位置,第二次遇到这个数x时有nums[x]==x,此时一定可以得到一个重复数字。如果该数与数组下标不等,但是相等的数组下标位置所存的数已经满足nums[i]==i,此时这个数就是一个重复的数,直接return nums[i]与数组下标相等,即nums[i]==i,则跳过下列判断并继续枚举。否则就把这个数交换到与该数相等的数组下标的位置。假设遍历到了nums[i]这个数,如果这个数。

2023-01-07 11:26:08 144

原创 KMP算法

这个算法我从2018-02-11在清北学堂的课上学了第1次,后在大二的数据结构课上学了第2次,然后又到现在学习了第3次,最终觉得自己理解了这个算法这个算法的核心思想就是:每次失配后,我们并不是像暴力算法那样只前进一格,而是前进到这样一个位置:设在当前位置下部分匹配的字符串为A,我们将P串移动到仍然和这个A部分匹配的位置为什么要移动到这个位置呢?我们可以思考一下,往前移动会出现这样几种情况:1.一点也不匹配,即P串的第一个位置和S就不匹配,这样的移动无疑是浪费,应该跳过2.部分匹配,但是匹

2021-05-25 21:35:52 206

原创 区间贪心

问题1:数轴上有n个开区间(ai, bi)。选择尽量多个区间,使得这些区间两两没有公共点。策略:如果x区间完全包含了y区间,那么我们选择y区间按照右端点bi从小到大排序,从第一个区间开始选如果目前的区间与上一个区间有相交的部分,则排除掉(排除掉即该区间不再存在,而不z是不选择这样简单舍弃)简单来说就是:一定选择第一个区间,每次选区间的时候选择和上一个被选上的区间不相交的区间思路:首先对于x完全包含了y的情况,如下图所示,小区间为y,大区间为x那么我们选择y区间,因..

2021-04-25 17:06:32 391

原创 洛谷P5788 【模板】单调栈

题意:找到每个数后面第一个大于它的元素的下标可以比喻成站了一队人,每个人向右看,求他们每个人看到的第一个人的位置顾名思义,单调栈就是栈内元素具有单调性,其维护的就是一个数前/后第一个大于/小于他的数我们将输入的数列a[]倒着遍历一下(要找每个数后面的第一个比它大的数,从后向前入栈可以实现),入栈的第一个数也就是数列的最后一个,它的对应函数值一定为0。倒数第二个入栈,和栈顶元素即它后面元素(即最后一个元素)相比,若比它大,栈顶元素就出栈,否则这个倒数第二个元素就正常入栈......有一个问题是

2021-01-27 14:55:30 297

原创 扩展欧几里得算法

首先了解一下欧几里得算法,即辗转相除法如果我们要求1997和615两个数的最大公约数1997 / 615 = 3 ...... 152615 / 152 = 4 ...... 7152 / 7 = 21 ...... 57 / 5 = 1 ...... 25 / 2 = 2 ...... 12 / 1 = 2 ...... 0以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。(摘自百度百科)设a

2021-01-23 21:16:13 479

原创 数据结构课实验习题--中缀表达式转换为后缀表达式并求值

所谓中缀表达式与后缀表达式的定义,即是看运算符在操作数的位置如何中缀表达式即作符是以中缀形式处于操作数的中间(例:3 + 4)后缀表达式(也叫逆波兰表达式)则为3 4 +以下摘抄百度百科:一个表达式E的后缀形式可以如下定义:(1)如果E是一个变量或常量,则E的后缀式是E本身。(2)如果E是E1 op E2形式的表达式,这里op是任何二元操作符,则E的后缀式为E1'E2' op,这里E1'和E2'分别为E1和E2的后缀式。(3)如果E是(E1)形式的表达式,则E1的后缀式就是E的后

2020-11-27 19:25:55 3951

原创 数据结构第三章栈和队列

栈和队列是两种重要的线性结构,也是线性表,是操作受限的线性表;从数据类型的角度看,他们是和线性表不相同的抽象数据类型栈限定仅在表尾进行插入或删除操作的线性表表尾称为栈顶,表头称为栈底,退栈的第一个元素为栈顶元素,故称为后进先出的线性表顺序栈:用顺序表实现的栈1.定义#define MAXSIZE 100typedef struct{ SElemType *top; SElemType *base; int stacksize;}SqStack;2.初

2020-11-25 22:58:14 381

原创 写在前面

一个巨弱都不好意思说是退役OIer的博客原高中临清一中最喜欢和同学翘课去机房现在在QDU挣扎着想打acm(想peach)欢迎骚扰:QQ:1140312750Mail:jmxwzy0510@163.com现在目标:把Pat乙级做完博客目前会写一些pat乙级题目的题解,还有少量的noip时期的题解,还有一些在https://www.luogu.com.cn/blog/w...

2020-05-05 22:47:50 198

原创 PAT乙级1030

尺取法尺取法通常是指对数组保存一对下表(起点,终点),然后根据实际情况交替推进两个端点直接得出答案的方法,这种操作很像是尺蠖(日文中称为尺取虫)爬行的方式故得名。(以上文字摘自挑战程序设计竞赛第2版)Codeforces中显示它的算法名称叫做"two pointers". 直译成中文的话叫双指针法. 怎么说呢……做到提高组之后,很多oier仅仅是觉得好像有这么一个两个指针从左到右扫一遍...

2020-04-26 14:42:52 208

原创 PAT乙级1031

照题目意思模拟即可两种通不过的情况:1.前17位出现不合法字符,遇到后直接退出2.前十七位加和对11取模后的值与表中不符一个小细节以上两种情况不能用if并列,而是if(有不合法字符)......else{if(取模后的值不相等)}否则测试点2答案错误#include <iostream>#include <cstdio>#include &lt...

2020-04-26 14:10:08 153

原创 PAT乙级1029

先把所有的小写字母转换为大写字母,对于b串每个字符打上标记,然后遍历a串,如果某个字符在b中未被标记就输出,然后把这个字符打上标记,以免后面重复输出#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;...

2020-02-09 20:16:29 157

原创 PAT乙级1028

开始我想的比较麻烦,比如统计有效生日年数,我先判断是不是有效年份,需要分成>1814和==1814的情况,如果==1814,还要再根据月份分情况,分出了>9和==9的情况。。。后面找最年轻和最年长的人也麻烦,我先把所有人从小到大排序,以找最年轻的人为例,枚举p数组,分出==1814和>1814的情况,然后就和上面一样一直分情况。。。结果只有13分后来百度了一下,发现结构体是可...

2020-02-06 21:24:50 233

原创 PAT乙级1027

把输出的图形看成三个部分,假设上部分和下部分分别有t层,则t=3+5+7+9+......,是个等差数列求和,算出来是t^2+2t,乘以2再加上中部分的1个,整理出来总个数就是2*t*t+4*1,用输入的数n减去即可以输出上部分图形为例,每层先输出空格,以题目给的样例为例,t=2,上部分应该倒着输出,所以第2行有0个空格,第一行有1个空格,第i行有t-i个空格;每行有2*i+1个*,下部分正序...

2020-02-05 18:56:10 295

原创 PAT乙级1026

四舍五入:把这个数+0.5再向下取整注意结果小于10的情况#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;int main(){ doubl...

2020-01-31 15:56:07 210

原创 PAT乙级1023

第一位数一定不是0,是比0大一点的数,有一输出一 ,没一输出二,所以先从1开始枚举,有哪个数先输出哪个数,然后立刻退出,然后从小到大枚举,按照每个数有多少个依次输出即可#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using names...

2020-01-31 13:43:16 209

原创 PAT乙级1022

注意特判0的情况,否则第三个点会WA(为什么例一中明明有4个余数,k数组里存里5个??)https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344#include <iostream>#include <cstdio>#include <cstring&g...

2020-01-30 20:07:15 226

原创 PAT乙级1021

b数组存储每个数出现的数,直接从0到9枚举出现了就输出,避免判重#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main(){ string s; cin>>s;...

2020-01-30 19:37:15 133

原创 PAT乙级1019

太骚的东西不能用,,本来我想用vector来存储每一位数,主要是看中它有个clear的功能,后来想了想确实没有必要,只有四位数,每次直接单点暴力修改即可。如果没有思路可以先只模拟第一次,后续的写法和第一次近乎相同,就是放在循环里输出时如果有格式要求尽量使用printf,比cout好用#include <iostream>#include <cstdio>#in...

2020-01-29 18:55:37 280

空空如也

空空如也

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

TA关注的人

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