
数据结构与算法
文章平均质量分 75
CCH²¹
想要闪烁就对自己更严格。
展开
-
【计算机考研·数据结构】线性表的顺序表示·程序设计题
题目出处:王道考研2022年数据结构考研复习指导1.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删函数的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。遍历顺序表,记录最小值元素及其位置,遍历结束后用最后一个元素填补到记录的位置,顺序表长度减1。bool del_min(SqList& L, ElemType& value) { if (L.length == 0) { // 显示出错信息 retu.原创 2022-03-15 20:34:45 · 1303 阅读 · 0 评论 -
分治算法、贪心算法和动态规划的典型例题
目录Part 1 - 分治算法例1 - 洛谷P1908 逆序对DescriptionInputOutputSample InputSample OutputAccepted Code 1Accepted Code 2Part 2 - 贪心算法例2.1 - Codeforces 1339C Powered AdditionDescriptionInputOutputSample InputSample OutputAccepted Code例2.2 - 洛谷P1090 \[NOIP2004 提高组\] 合并果原创 2022-01-06 18:14:35 · 1911 阅读 · 0 评论 -
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)团队赛组热身赛复盘
目录A - 这是一道压轴题DescriptionInputOutputSample Input 1Sample Output 1HintAC代码B - 这是一道大水题DescriptionInputOutputSample Input 1Sample Output 1HintAC代码D - 智慧数DescriptionInputOutputSample Input 1Sample Output 1AC代码A - 这是一道压轴题Description正如您所见,这是一道压轴题。所谓压轴,就是京剧中指一场原创 2021-10-24 00:53:04 · 1090 阅读 · 0 评论 -
【算法积累】最小操作次数使数组元素相等
LeetCode 453 - 最小操作次数使数组元素相等(简单)题目链接数学推导及代码假设原始数组之和为sss,最小操作次数为ansansans,ansansans次操作后数组元素相等,为targettargettarget。对于数组的n−1n-1n−1个元素都要进行增加1的操作,那么增加的总数是ans×(n−1)ans\times (n-1)ans×(n−1)。则不难推断出ans×(n−1)+s=target×nans\times (n-1)+s=target\times nans×(n−1)+s原创 2021-09-05 18:12:50 · 486 阅读 · 0 评论 -
【算法积累】每日温度
LeetCode 739 - 每日温度(中等)题目链接第一次尝试 - 暴力法 (TLE)语言:C++class Solution {public: vector<int> dailyTemperatures(vector<int>& temperatures) { int n = temperatures.size(); vector<int> ans(n); ans[n - 1] = 0;原创 2021-09-02 19:44:18 · 315 阅读 · 0 评论 -
【算法积累】计蒜客迷宫三问 (DFS & BFS)
计蒜客T1595 - 迷宫(一)题目链接一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道。看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。输入格式第一行输入两个整数 nnn 和 mmm,表示这是一个 n×mn \times mn×m 的迷宫。接下来的输入一个 nnn 行 mmm 列的迷宫。其中S表示蒜头君的位置,*表示墙,蒜头君无法通过,.表示路,蒜头君可以通过.移动,T表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上,原创 2021-08-09 16:28:58 · 1487 阅读 · 0 评论 -
【算法积累】LeetCode的三道DFS题目
LeetCode 200 - 岛屿数量(中等)题目链接注意DFS的条件判断,不然会因为无限递归而Stack Overflow。语言:C++class Solution {public: const int di[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; void dfs(vector<vector<char>>& grid, int x, int y) { int r = grid原创 2021-08-08 23:41:28 · 201 阅读 · 0 评论 -
团体程序设计天梯赛题目集 L1-064 估值一亿的AI核心代码 Python正则表达式极简解法
题目描述以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的AI英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来;消除原文中多余空格:把相邻单词间的多个空格换成1个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;把原文中所有大写英文字母变成小写,除了I;把原文中所有独立的can you、could you对应地换成I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;把原文中所有独立的I和me换成you;把原文中所有的问号?换原创 2021-07-26 11:39:33 · 540 阅读 · 0 评论 -
CCCC-GPLT (2021) 复盘(L1阶段)
目录L1-1 人与神(5分)L1-2 两小时学完C语言(5分)L1-3 强迫症(10分)L1-4 降价提醒机器人(10分)L1-5 大笨钟的心情(15分)L1-6 吉老师的回归(15分)L1-7 天梯赛的善良(20分)L1-8 乘法口诀数列(20分)写在最后L1-1 人与神(5分)签到题,没什么好说的……语言:Python (python3)print('To iterate is human, to recurse divine.')L1-2 两小时学完C语言(5分)签到题,an原创 2021-04-26 20:53:40 · 1052 阅读 · 4 评论 -
【算法积累】Catch That Cow & 轻重搭配(C++ & Java)
A - Catch That CowFarmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N(0≤N≤100,000)N (0≤N≤100,000)N(0≤N≤100,000) on a number line and the cow is at a point K(0≤K≤100,000)K (0≤K≤100,000)原创 2021-03-24 20:59:05 · 376 阅读 · 0 评论 -
【算法积累】Oil Deposits(DFS&BFS)
题目描述The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes原创 2021-03-20 16:22:19 · 368 阅读 · 1 评论 -
C4天梯赛练习总结 (20210304)
题目链接:团体程序设计天梯赛-练习集L1-019 谁先倒语言:C++ (g++)#include <bits/stdc++.h>using namespace std;int arr[100][4];int main() { int A_val, B_val; cin >> A_val >> B_val; int A_cur = A_val; int B_cur = B_val; int N; cin &.原创 2021-03-04 21:00:37 · 379 阅读 · 2 评论 -
C4天梯赛练习总结 (20210302-20210303)
题目链接:团体程序设计天梯赛-练习集L1-005 考试座位号语言:Python (python3)N = int(input())d = {}for i in range(N): info = input().split() d[int(info[1])] = info[0] + ' ' + info[2]M = int(input())nums = list(map(int, input().split()))for i in range(M): num = n.原创 2021-03-03 20:24:36 · 598 阅读 · 7 评论 -
XUPT_ACM2021寒假训练第二周练习记录
试题链接:第二周训练题 - Virtual Judge这周事情比较多,没有把20道题全部写完,只写了14道题。目录B - 补提交卡C - 热血格斗场D - 背包包E - 数列极差G - 过河H - 超市I - 放苹果J - 滑雪L - 贫穷的ACMM - I NEED A OFFER!N - 今年暑假不ACO - 拯救X先生Q - 奇怪的电梯R - 小火车B - 补提交卡语言:C++#include <iostream>#define MAXSIZE 105using name.原创 2021-02-07 15:46:13 · 477 阅读 · 0 评论 -
XUPT_ACM2021寒假训练第一周练习记录
试题链接:第一周训练题目录A - 查成绩B - 放暑假C - 展开字符串D - 回文数猜想E - 宇航员F - 买鸡问题G - 水贴H - 最小新整数I - 赶时间J - 暖气坏了K - 完美立方L - N对数的排列问题M - 母牛的故事N - 无限的路O - 统计元音P - 求数列的和Q - 数字游戏R - 轻重搭配S - Powered AdditionT - Puzzle From the FutureA - 查成绩语言:C++#include <iostream>#incl.原创 2021-01-27 21:18:39 · 785 阅读 · 2 评论 -
【算法积累】本周VJ的大一算法题 (Begin: 2020-12-21)
其实这周的题还算比较简单,果然,如果叫“简单题”的题都不简单的话,叫“难题”的题也都不难嘛。A - 难有一口深度为 highhighhigh 米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬 upupup 米,夜里则顺井壁向下滑 downdowndown 米,若青蛙从某个早晨开始向外爬,对于任意指定的 highhighhigh、upupup 和 downdowndown 值(均为自然数),计算青蛙多少天能够爬出井口?输入格式输入 333 个正整数:highhighhigh、upupup 和..原创 2020-12-23 00:52:50 · 757 阅读 · 0 评论 -
【算法积累】随便写写给大一布置的算法题 (Begin: 2020-12-06)
弱弱吐槽一下这周题目的名称起得真的是很随性……最后一题虽然叫“简单题”,但是一点都不简单!!!目前我是还没做出来T^T……A - 没错,又是我大数求两个大的正整数相减的差。输入格式共 222 行,第 111行 是被减数 aaa ,第2行是减数 bbb (a>b)(a>b)(a>b)。每个大整数不超过 200200200 位,不会有多余的前导零。输出格式一行,即所求的差。Sample Input9999999999999999999999999999999999999..原创 2020-12-08 21:16:31 · 833 阅读 · 0 评论 -
【算法积累】被围绕的区域
LeetCode 130. 被围绕的区域难度 中等给定一个二维的矩阵,包含'X'和'O'(字母O)。找到所有被'X'围绕的区域,并将这些区域里所有的'O'用'X'填充。示例X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为'X'。 任何不在边界上,或不与边界上的'O'相连的'O'最终都会被填充为'X'。如果两个元原创 2020-12-08 16:59:11 · 577 阅读 · 0 评论 -
【算法积累】圆和矩形是否有重叠
LeetCode 1401. 圆和矩形是否有重叠难度 中等给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。如果圆和矩形有重叠的部分,请你返回True,否则返回False。换句话说,请你检测是否存在点 (xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。示例1输入:radius = 1, x_center =原创 2020-12-07 19:20:51 · 649 阅读 · 0 评论 -
【算法积累】132模式
LeetCode 456. 132模式难度 中等给定一个整数序列:a1, a2, …, an,一个132模式的子序列ai, aj, ak被定义为:当i < j < k时,ai < ak < aj。设计一个算法,当给定有n个数字的序列时,验证这个序列中是否含有132模式的子序列。注意:n的值小于15000。示例1输入: [1, 2, 3, 4]输出: False解释: 序列中不存在132模式的子序列。示例2输入: [3, 1, 4, 2]输出: True解释:原创 2020-11-24 20:13:13 · 371 阅读 · 0 评论 -
【算法积累】回文链表
LeetCode 234. 回文链表难度 简单请判断一个链表是否为回文链表。示例1输入: 1->2输出: false示例2输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解法1 数组+双指针复制链表值到数组列表中,然后使用双指针法判断是否为回文。语言:C/** * Definition for singly-linked list. * struct ListNode { *原创 2020-11-23 20:51:43 · 268 阅读 · 0 评论 -
【数据结构】扩展先序序列建立二叉树以及对二叉树的一系列操作
题目要求输入二叉树的扩展先序序列,以二叉链表作为存储结构,建立二叉树。输出这棵二叉树的先序、中序和后序遍历序列,其中后序遍历使用非递归算法实现。统计二叉树中非叶子结点的个数。计算二叉树的高度。非递归后序遍历二叉树思路 在后序遍历中,左、右子树均访问完成后,从右子树返回时,上一层结点才能退栈并被访问。那么,当从子树返回时,如何判断是从左子树返回还是从右子树返回,进而确定栈顶的上一层结点是否应出栈。 其中一种方法是,每个结点入栈时设置一个标记位flag同时入栈,进入左子树访问时,令flag原创 2020-11-06 03:56:09 · 9036 阅读 · 2 评论 -
【算法积累】外观数列
LeetCode 38. 外观数列难度 简单给定一个正整数n (1 ≤ n ≤ 30),输出外观数列的第n项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字1;描述前一项,这个数是1即 “一个1”,记作11;描述前一项,这个数是11即 “两个1” ,记作21;描述前一项,这个数是21即原创 2020-10-26 22:19:02 · 204 阅读 · 1 评论 -
【算法积累】二叉树的层平均值&二叉树的后序遍历(非递归)
LeetCode 637. 二叉树的层平均值难度 简单给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例输入: 3 / \ 9 20 / \ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。提示:节点值的范围在32位有符号整数范围内。解法一 深度优先搜索 (Depth First Search, DFS)深度优先搜索的关键原创 2020-10-24 11:05:38 · 242 阅读 · 0 评论 -
实验室暑假学习第六周算法总结
LeetCode 316. 去除重复字母难度 困难给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例1输入: "bcabc"输出: "abc"示例2输入: "cbacdcbc"输出: "acdb"解法 贪心+栈语言:Cchar * removeDuplicateLetters(char* s) { // 两种特殊情况,字符串为空或长度为0,以及字符串长度为1 if原创 2020-08-17 23:06:57 · 187 阅读 · 0 评论 -
实验室暑假学习第五周算法总结
LeetCode 268. 缺失数字难度 简单给定一个包含0, 1, 2, ..., n中n个数的序列,找出0 .. n中没有出现在序列中的那个数。示例1输入: [3,0,1]输出: 2示例2输入: [9,6,4,2,3,5,7,0,1]输出: 8解法1 HashMap语言:Cint missingNumber(int* nums, int numsSize) { int ret = 0; bool flag[numsSize + 1]; memset(f原创 2020-08-11 09:32:20 · 229 阅读 · 0 评论 -
实验室暑假学习第四周算法总结
LeetCode 8. 字符串转换整数 (atoi)难度 中等请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成原创 2020-08-04 12:00:05 · 214 阅读 · 0 评论 -
实验室暑假学习第三周算法总结
LeetCode 3. 无重复字符的最长子串难度 中等给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是"abc",所以其长度为3。示例2输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是"b",所以其长度为1。示例3输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为3。请注意,你的答案必须是子串的长度,"pwke"是一个子序列,原创 2020-07-27 20:00:05 · 201 阅读 · 0 评论 -
实验室暑假学习第二周算法总结
LeetCode 628. 三个数的最大乘积难度 简单给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例1输入: [1,2,3]输出: 6示例2输入: [1,2,3,4]输出: 24注意1.给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。2.输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。解法 快速排序语言:Cint* cmp(const void* a, const void* b) {原创 2020-07-21 10:02:59 · 202 阅读 · 0 评论 -
实验室暑假学习第一周算法总结
LeetCode 378. 有序矩阵中第K小的元素难度 中等给定一个n × n矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个不同的元素。示例matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。提示你可以假设 k 的值永远是有效的,1 ≤ k ≤ n²。解法一 将矩阵转化为一维数组并排序语言:Python 3class So原创 2020-07-16 16:40:03 · 276 阅读 · 0 评论 -
自学数据结构与算法——算法
我正在学习的这门课程名叫“数据结构与算法”,这样看来,它们二者一定是有着某种关联。事实上,在学习数据结构的过程中,谈到“算法”是为了帮我们更好地理解数据结构。单说数据结构当然可以,在很短的时间内我们就可以学习完几种重要的数据结构。但是这样的话,我们学完后不会有什么感觉,也不知道数据结构有何作用。下面主要讨论一下有关算法的方方面面。两种算法的比较 在之前,无论是学习C语言也好,学习Pyth...原创 2020-02-13 20:13:16 · 471 阅读 · 0 评论 -
自学数据结构与算法——绪论
参考资料:《大话数据结构》,作者程杰,清华大学出版社什么是数据结构 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。这里不得不提一个著名的公式:程序设计=数据结构+算法。 在说数据结构之前,我们应该先要了解什么是数据。数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据包括整型、实型...原创 2020-02-12 21:31:04 · 349 阅读 · 0 评论