自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 栈与队列-用队列实现栈

请你仅使用一个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop和empty实现MyStackint pop()int top()truefalsesizeis emptyStack S;push(S, 1);push(S, 2);push(S, 3);push(S, 4);push(S, 5);

2024-06-04 11:46:13 331

原创 栈与队列-用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):实现MyQueueint pop()int peek()truefalsesizeis empty。

2024-06-04 11:17:39 344

原创 字符串-重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。可由子串 "ab" 重复两次构成。

2024-06-03 17:48:10 469

原创 字符串-KMP算法

KMP算法通过预处理模式字符串生成部分匹配表,并在搜索过程中利用这个表来指导字符比较,从而避免了不必要的比较操作,提高了搜索效率。它在处理字符串匹配问题时具有广泛的应用。代码实现// 暴力求解法int i, j;for (i = 0;i

2024-06-03 16:01:44 391

原创 字符串-翻转字符串里的单词

151. 反转字符串中的单词给你一个字符串 s ,请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

2024-05-11 15:43:35 277

原创 字符串-反转字符串II

541. 反转字符串 II给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

2024-05-10 16:40:01 304

原创 哈希表-四数之和

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0

2024-04-11 14:38:11 389

原创 哈希表-三数之和

不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。

2024-04-10 19:23:38 369

原创 哈希表-四数相加II

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。

2024-04-09 18:52:27 444

原创 哈希表-两数之和

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。

2024-04-05 12:47:09 400

原创 哈希表-两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

2024-03-28 00:35:34 353

原创 哈希表-有效的字母异位词

那看一下如何检查字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true。暴力的解法,两层for循环,同时还要记录字符是否重复出现,很明显时间复杂度是 O(n^2)。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 2: 输入: s = "rat", t = "car" 输出: false。再遍历 字符串s的时候,

2024-03-27 20:42:01 391

原创 链表-环形链表II

为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。这道题目,不仅考察对链表的操作,而且还需要一些数学运算。

2024-03-27 19:06:07 298

原创 字符串-反转字符串

对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]

2024-03-27 17:45:30 328

原创 两两交换链表中的节点

这道题目正常模拟就可以了。建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

2024-03-27 16:59:38 335

原创 C语言实现——删除链表倒数第N个节点

双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2], n = 1 输出:[1]

2024-03-21 14:08:50 448 1

原创 C语言实现——反转链表

实现对单链表的反转,有三种方法,分别为:双指针法,递归法,头插法。其中,头插法是对当前链表中的所有元素再进行一次头插法,实现链表的反转。反转一个单链表,要求不能申请额外的内存空间。

2024-01-04 15:04:34 923

原创 设计链表(C语言实现)

链表是非常基础的数据结构,这里选择使用带有虚拟头结点的链表。设计一个链表类,实现六个接口。

2024-01-03 19:06:33 445

原创 移除链表元素

链表删除元素的原理就是,找到要删除元素的节点,让删除元素的前一个结点的next指针指向删除结点next指针指向的元素。有两种删除方法,第一种是直接使用原来的链表进行删除,但是需要处理头结点符合删除条件时候的情况。第二种是使用一个虚拟头结点,最后要把虚拟头结点释放掉。输入:[1→4→2→4],val = 4。在链表中删除指定值的元素。

2023-12-22 18:13:01 428

原创 螺旋矩阵II

这道题并不设计具体的算法,就是模拟螺旋打印的过程,考察对代码的掌控能力。给出一个正整数n,从外向内的螺旋顺序打印 1 到 n^2 的所有数值。

2023-12-22 15:58:36 441

原创 长度最小的子数组

在一个正整数数组中找到最小长度的连续子数组,使子数组的元素之和大于或者等于s。返回满足条件的连续子数组的最小长度,如果没有找到则返回0。求解长度最小的子数组有两种方法,第一种是暴力解法,使用两个for循环;第二种方法是使用滑动窗口法(双指针法)。输入:s = 12,arr = [4,6,2,4,9,8,7]。

2023-12-20 12:41:07 403

原创 C语言实现——移除数组元素

原地移除数组中所有等于val的元素,要求不能使用额外的辅助空间,即空间复杂度为O(1)。返回移除后新数组的size。实现数组元素删除有两种方法,第一种是暴力解法,使用两个for循环;第二种方法是使用双指针法(快慢指针法)。原地移除元素4之后的数组为[5,6],数组长度为2。数组为[4,5,6,4,4,4]。

2023-12-19 15:00:48 1580

原创 C语言实现——二分查找

【代码】C语言实现——二分查找。

2023-12-18 19:16:19 531

原创 LeetCode 209. 长度最小的子数组

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]给定一个含有 n 个正整数的数组和一个正整数 target。输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。

2023-04-12 10:50:34 175

原创 LeetCode 977. 有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。链接:https://leetcode.cn/problems/squares-of-a-sorted-array。解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]排序后,数组变为 [0,1,9,16,100]输出:[0,1,9,16,100]输出:[4,9,9,49,121]

2023-04-12 10:34:24 154

原创 LeetCode 27. 移除元素

例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,4,0,3]

2023-04-12 10:19:38 141

原创 LeetCode 704. 二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。链接:https://leetcode.cn/problems/binary-search。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。nums 的每个元素都将在 [-9999, 9999]之间。

2023-04-12 10:08:03 108

原创 0-1 背包 (回溯法)

n=5, c=10, w={2, 2, 6, 5, 4}, v(p)={6, 3, 5, 4, 6}的0-1背包问题的最优解和最优值。

2023-03-09 15:36:05 286 1

原创 0-1背包(动态规划 & 贪心算法)

如果 背包重量为9,现在有3个物品,其重量、价值、和性价比分别为求解背包能够装入的最大价值。

2023-03-08 13:06:54 1118

原创 1004: 0-1背包问题(动态规划)

需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i 的重量为wi ,价值为pi。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。多个测例,每个测例的输入占三行。第一行两个整数:n(n

2023-03-07 21:10:03 102

原创 1004: 0-1背包问题(暴力求解)

需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i 的重量为wi ,价值为pi。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。多个测例,每个测例的输入占三行。第一行两个整数:n(n

2023-03-07 21:03:45 894

原创 1003: 快速排序

第一行是一个整数n,表示要排序的数的个数;下面一行是用空格隔开的n个整数。给定一个数列,用快速排序算法把它排成升序。输出排序后的数列,每个数字占一行。

2023-03-07 12:40:16 115

原创 1002: 归并排序

第一行是一个整数n(n不大于10000),表示要排序的数的个数;给定一个数列,用归并排序算法把它排成升序。输出排序后的数列,每个数字占一行。下面一行是用空格隔开的n个整数。

2023-03-07 12:37:52 244

原创 1001: 二分查找

题目描述给定一个单调递增的整数序列,问某个整数是否在序列中。

2023-03-04 14:28:14 114

原创 《编译原理》综合训练实习报告

首先就是for循环语句中,我的第一个分号之前只能是一个声明语句,但是C语言中,第一个分号之间的语句可以是表达式,也可以什么都没有。所以答辩完之后,我就按照老师的建议,修改了for语句的语义分析,基本上完成了for循环语句的功能。目标是完成MiniC语言中的单词的解析(词法分析),输出二元式,在词法分析的基础上,构造MiniC的递归下降分析文法,利用JavaCC实现递归下降文法,输出语法树。使用文件读入的方式测试编译程序,尽可能实现要求的功能,可以自己决定实现哪些扩展功能。

2022-12-27 21:12:24 1445

原创 Nwafu-OJ-1489 Problem s 统计吉利数字

问题 : 统计吉利数字时间限制: 1 Sec 内存限制: 128 MB提交: 4644 解决: 1770[提交][状态][讨论版]题目描述现代人对数字越来越讲究,都喜欢含有8的数字。现要你编程计算a至b之间的含有数字8的数的个数(比如181,88,8,28这些数都含有数字8,而21,45,49等没有含有数字8)。输入在一行中输入两个正整数a和b,用一个空格隔开。0

2022-12-01 00:56:56 661 1

原创 Nwafu-OJ-1490 Problem t 寻找亲近的同学

问题 : 寻找亲近的同学时间限制: 1 Sec 内存限制: 128 MB提交: 8009 解决: 1511[提交][状态][讨论版]题目描述小明喜欢把他的同学分类,每一类用一个大写英文字母标记。他只乐意亲近一部分类型的同学。请从小明的同学中挑出他愿意亲近的同学。输入输入三行。 第一行是一个正整数m,m是小明的学号。 第二行是由大写字母组成的字符串,其中的字符表示小明喜欢的类型。 第三行是由大写字母 组成的字符串,其中的字符是小明同学(包含他自己)的类型,按照学号有序。学号从1开始,没有间

2022-12-01 00:56:33 880

原创 Nwafu-OJ-1492 Problem v 删除子串

问题 : 删除子串时间限制: 1 Sec 内存限制: 128 MB提交: 6067 解决: 1236[提交][状态][讨论版]题目描述在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数:int delSubStr(char * src, char * sub,char * result); 【输入】 src:输入的被操作字符串 sub:需要查找并删除的特定子字符串【输出】 result:在src字符串中删除所有sub子字

2022-12-01 00:56:15 754

原创 Nwafu-OJ-1493 Problem w 比压牌

问题 : 比压牌时间限制: 1 Sec 内存限制: 128 MB提交: 4648 解决: 1153[提交][状态][讨论版]题目描述牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。 规则:出牌牌型有5种 [1]一张 如4 则5...9可压过 [2]两张 如44 则55,66,77,...,99可压过 [3]三张 如444 规则如[2] [4]四张 如4444 规则如[2] [5]五张 牌型只有1234

2022-12-01 00:54:47 802

原创 Nwafu-OJ-1478 Problem x 计算某年某月对应天数

问题 : 计算某年某月对应天数时间限制: 1 Sec 内存限制: 128 MB提交: 5314 解决: 1535[提交][状态][讨论版]题目描述输入年份和月份信息,编程判断年份月份的合法性,并在输入不合法时提示错误并退出程序,合法时输出该月对应天数(要求:1000

2022-12-01 00:54:29 774

空空如也

空空如也

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

TA关注的人

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