算法与数据结构
文章平均质量分 86
记录算法学习过程中碰到的难理解的或者易混淆的知识点。
涛歌依旧fly
计算机研究生,专注于Java后端技术学习。
——勇敢地奔跑
展开
-
算法与数据结构专栏 目录
文章目录前言LeetCodeCSP前言此为算法与数据结构目录,专栏主要记录自己刷算法题时解题过程、思路以及自己学习算法时的所得,同时专栏也会见证自己的成长。此专栏会一直连载下去,学习无止境。如果有不对的地方或有待改善的地方,希望可以留言交流学习。LeetCode[leetcode]翻转矩阵后的得分&&weekly-contest-91总结[leetcode]柠檬水找零&...原创 2020-01-20 10:14:48 · 238 阅读 · 0 评论 -
什么是红黑树
红黑树是一种含有红黑结点并能自平衡的二叉查找树。性质1每个节点要么是黑色,要么是红色。性质2根节点是黑色。性质3每个叶子节点(NIL)是黑色。性质4每个红色结点的两个子结点一定都是黑色。性质5任意一结点到每个叶子结点的路径都包含数量相同的黑结点。性质5.1如果一个结点存在黑子结点,那么该结点肯定有两个子结点图1就是一颗简单的红黑树。其中Nil为叶子结点,并且它是黑色的。(值得提醒注意的是,在Java中,叶子结点是为null的结点。)图1一颗简单的红黑树红黑树并不是一个。...转载 2022-07-28 08:39:20 · 77 阅读 · 0 评论 -
跳表的原理
跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。跳表在原有的有序链表上增加了多级索引,通过索引来实现快速查询。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树、AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LevelDB中都有用到。...原创 2022-07-28 08:16:33 · 1114 阅读 · 0 评论 -
自来水管道
问题 R: 自来水管道 时间限制: 1 Sec 内存限制: 128 MB 提交: 840 解决: 241 [提交][状态][讨论版] 题目描述你领到了一个铺设校园内自来水管道的任务。校园内有若干需要供水的点,每两个供水点可能存在多种铺设路径。对于每一种铺设路径,其成本是预知的。 任务要求最终铺设的管道保证任意两点可以直接或间接的联通,同时总成本最低。输入 每个测试用例由多行组...原创 2017-06-22 00:16:03 · 3120 阅读 · 0 评论 -
力扣二分查找模块全解-红蓝边界法
§ 模板介绍§ 模板运用§ 模板介绍六款二分查找模板,哪款才是你的菜?转载链接:https://leetcode.cn/circle/article/xYBtLt/转载 2022-06-10 10:52:42 · 373 阅读 · 0 评论 -
表达式树的创建与输出
问题 K: 表达式树的创建与输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 539 解决: 311 [提交][状态][讨论版] 题目描述编一个程序,读入先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储),请注意的是,我们保证该树一定是表达式树(见教材5.2 5.8)。 例如下面的先序遍历字符串: + 13 # # * 5 # # 9 # # 运算符只可能是.........原创 2017-06-22 00:46:13 · 7693 阅读 · 2 评论 -
快速排序 牛客网
题目题目描述给定一个数组,请你编写一个函数,返回该数组排序后的形式。示例1输入复制[5,2,3,1,4]返回值复制[1,2,3,4,5]示例2输入复制[5,1,6,2,5]返回值复制[1,2,5,5,6]备注:数组的长度不大于100000,数组中每个数的绝对值不超过10^9思路以最后一个节点为标杆target,进行一轮比较,partition,得到数组结果,左边为小于区域【start,small】,中间为等于区域,【small+1,big-1】,右边为大于区域【big原创 2021-04-01 20:50:00 · 198 阅读 · 0 评论 -
【PAT B1009 】说反话
空格为分隔符,得到的单词用一个二维数组存放。最后将二维数组逆序输出。#include<bits/stdc++.h>int main(){ char s[100]; while(gets(s)) { char str[100][100]; int k=0,l=0; for(int i=0;i<=strlen(s);i++) { if(s[i]=='...原创 2020-03-17 09:26:25 · 140 阅读 · 0 评论 -
【CCF认证201712-2】游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。 游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时...原创 2020-01-22 11:06:58 · 262 阅读 · 0 评论 -
【CCF认证 201612-2 】工资计算
问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元; 2) A中不超过1500元的部分,税率3%; 3) A中超过1500元...原创 2020-01-22 10:34:29 · 263 阅读 · 0 评论 -
【CSP认证201712-1】最小差值
文章目录题目思路代码题目思路如图,如果有n个数,遍历的次数有n*(n-1)/2 次;每次遍历计算两个数之间的差值,接着记录其中的最小值即可。代码AC代码如下:#include<bits/stdc++.h>int main(){ int n; scanf("%d",&n); int a[2000]; for(int i=1;i<=n;i++) ...原创 2020-01-20 10:36:35 · 190 阅读 · 1 评论 -
[leetcode]翻转矩阵后的得分&&weekly-contest-91总结
题目链接: 翻转矩阵后的得分一、题目:二、思路三、源代码一、题目:有一个二维矩阵 A 其中每个元素的值为 0 或 1 。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。...原创 2018-07-01 22:34:31 · 671 阅读 · 0 评论 -
[leetcode]柠檬水找零&&weekly-contest-91总结
题目链接:柠檬水找零前文一、 题目二、思路三、源代码四、总结前文又是一个周末,第一次参加leetcode的weekly-contest。早上起的晚了,匆匆忙忙打开室友的电脑(恩,他不在,也没有密码),就开始上午的刷题了。目前能力也是很菜滴,只做出两个,一个easy,一个medium。还剩两个没下笔。不过自我认为,题不在多,贵在总结,希望自己可以持之...原创 2018-07-01 22:14:30 · 475 阅读 · 0 评论 -
【CSP认证 201612-1 】 中间数
题目问题描述 在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个整数序列,请找出这个整数序列的中间数的值。输入格式 输入的第一行包含了一个整数n,表示整数序列中数的个数。 第二行包含n个正整数,依次表示a1, a2, …, an。输出...原创 2020-01-19 17:44:45 · 485 阅读 · 0 评论 -
【csp认证201909-1】小明种苹果
#include<bits/stdc++.h>int main(){ int N,M; scanf("%d%d",&N,&M); int index=1,total=0,maxDec=1,tempDec; int t1,t2; for(int i=1;i<=N;i++) { scanf("%d",&t1); total+=t1;...原创 2020-01-18 11:33:26 · 183 阅读 · 0 评论 -
【CCF认证201912-2】回收站选址
题目:解析将所有回收站用数组存放,遍历每个点,检查这个点上下左右的点是否都存在这个数组中,如果是,则进一步对这个点进行评分,依旧是检查这个点四个对角的点是否都存在。由此可见,需要两层for循环,时间复杂度为O(n^2)。#include<bits/stdc++.h>bool JudExit(int a[][3],int n,int x,int y){ for(int i=...原创 2020-01-18 11:11:16 · 312 阅读 · 0 评论