算法练习
文章平均质量分 78
尔等同学
这个作者很懒,什么都没留下…
展开
-
蓝桥杯真题练习【1】判断日期有效、整数取整、大数字BigInteger、求余定理、剪枝
日期问题输入描述一个日期,格式是 “AA/BB/CCAA/BB/CC” (0 \leq A, B, C \leq 90≤A,B,C≤9)。输出描述输出若干个不相同的日期,每个日期一行,格式是 “yyyy-MM-ddyyyy−MM−dd”。多个日期按从早到晚排列。输入输出样例示例输入02/03/04输出2002-03-042004-02-032004-03-02import java.util.Scanner;// 1:无需package// 2: 类名必须Main, 不可修改原创 2021-11-15 20:49:24 · 643 阅读 · 0 评论 -
CCF.201512-1数位之和(water\c++遍历字符串)
试题编号: 201512-1试题名称: 数位之和时间限制: 1.0s内存限制: 256.0MB问题描述:问题描述给定一个十进制整数n,输出n的各位数字之和。输入格式输入一个整数n。输出格式输出一个整数,表示答案。样例输入20151220样例输出13样例说明20151220的各位数字之和为2+0+1+5+1+2+2+0=13。评测用例规模与约定所有评测用例满足:0...原创 2020-01-14 09:46:33 · 225 阅读 · 0 评论 -
CCF.201509-1数列分段(水)
试题编号: 201509-1试题名称: 数列分段时间限制: 1.0s内存限制: 256.0MB问题描述:问题描述给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?输入格式输入的第一行包含一个整数n,表示数列中整数的个数。第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。输出格式输出一个整数,表示给定的数列有多...原创 2020-01-14 09:45:14 · 293 阅读 · 0 评论 -
CCF.201503-1图像旋转(数组、格式题)
试题编号: 201503-1试题名称: 图像旋转时间限制: 5.0s内存限制: 256.0MB问题描述:问题描述旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。输入格式输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。接下来n行每行包含m个整数,表示输入...原创 2020-01-12 15:12:00 · 183 阅读 · 0 评论 -
CCF.201412-1门禁系统(map、结构体)
试题编号: 201412-1试题名称: 门禁系统时间限制: 1.0s内存限制: 256.0MB问题描述:问题描述涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。输入格式输入的第一行包含一个整数n,表示涛涛的记录条数。第二行包含n个整数,依次表示涛涛的记录中每位读者...原创 2020-01-12 14:17:47 · 181 阅读 · 0 评论 -
CCF.出现次数最多的数
试题编号: 201312-1试题名称: 出现次数最多的数时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000...原创 2019-12-29 15:26:43 · 309 阅读 · 0 评论 -
PAT甲级练习题(2)The Dominant Color Colors in Mars (20)
原题:The Dominant Color (20)链接:https://www.nowcoder.com/questionTerminal/0495013675774f008541ea371eb5af17来源:牛客网Behind the scenes in the computer’s memory, color is always talked about as a series of ...原创 2019-10-24 08:09:48 · 217 阅读 · 0 评论 -
PAT甲级练习题(1) A+B Format Spell It Right (20)
原题: A+B Format (20)[A+B Format Spell It Right (20Calculate a + b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less...原创 2019-10-22 10:37:32 · 366 阅读 · 2 评论 -
PAT乙级真题(4)数字分类 (20)数素数 (20)
PAT乙级真题(4)数字分类 (20)数素数 (20)题目描述给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…;A3 = 被5除后余2的数字的个数;A4 = 被5除后余3的数字的平均数,精确到小数点后1位;A5 = 被5除后余4的数字中最大数字。...原创 2019-10-19 16:27:09 · 140 阅读 · 0 评论 -
PAT乙级真题(3)查验身份证(15) 跟奥巴马一起编程(15)
PAT乙级真题(3)查验身份证(15) 跟奥巴马一起编程(15)题目描述一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得 到值Z;最后按照以下关系对应Z值与校验码M的值: Z:0 1 2 3 4 5 6 7 ...原创 2019-10-18 07:42:37 · 673 阅读 · 0 评论 -
PAT乙级真题(2)个位数统计 (15) 程序运行时间(15)
PAT乙级真题(2)个位数统计 (15) 程序运行时间(15)题目描述给定一个k位整数N = dk-110k-1 + … + d1101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。题目链接输入描述:每个输入包含1个测试用例,即一个不超过1...原创 2019-10-16 20:58:50 · 240 阅读 · 0 评论 -
PAT乙级真题(1)A+B和C (15) 部分A+B (15)
题目描述给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。输入描述:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出描述:对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的...原创 2019-10-16 11:55:01 · 127 阅读 · 0 评论 -
PAT乙级(12)数组元素循环右移问题 蜜蜂寻路(water)
PAT乙级(12)数组元素循环右移问题 蜜蜂寻路(water)题目描述一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1 ……AN-1 )变换为(AN-M …… AN-1 A0 A1 ……AN-M-1 )(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设...原创 2019-10-14 11:19:16 · 149 阅读 · 0 评论 -
PAT乙级(11) 最难的问题 成绩排名 (water)
PAT乙级(11) 最难的问题 成绩排名 (water)题目描述NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不 变,并且消息原文的所有字母都...原创 2019-10-13 14:31:44 · 401 阅读 · 0 评论 -
PAT乙级(10)一元多项式求导 (25) 客似云来(water)
题目描述设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)输入描述:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出描述:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。输入例子:3 4 -5 2 6 1 ...原创 2019-10-12 19:24:36 · 168 阅读 · 0 评论 -
PAT乙级(9)素数对猜想 (20) 直方图
PAT乙级(9)素数对猜想 (20) 直方图题目描述让我们定义 dn 为:dn = pn+1 - pn ,其中 pi 是第i个素数。显然有 d1 =1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N (< 105 ),请计算不超过N的满足猜想的素数对的个数。输入描述:每个测试输入包含1个测试用例,给出正整数N。...原创 2019-10-11 20:59:54 · 137 阅读 · 0 评论 -
PAT乙级(3)斐波那契凤尾 骨牌铺方格(water) 养兔子(water)
PAT乙级(3)斐波那契凤尾 骨牌铺方格(water) 养兔子(water)题目描述NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后6位。输入描述:输入有多组数据。每组数据一行,包含一个整数n (1≤n≤100000)...原创 2019-10-02 13:41:45 · 169 阅读 · 0 评论 -
PAT乙级(6)写出这个数 蟠桃记(water) 发邮件
PAT乙级(6)写出这个数 蟠桃记(water) 发邮件题目描述读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入描述:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出描述:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。输入例子:123456789098765432112...原创 2019-10-06 12:30:34 · 219 阅读 · 0 评论 -
PAT乙级(7)一的个数 乒乓球筐
PAT乙级(7)一的个数 乒乓球筐链接:https://www.nowcoder.com/questionTerminal/091c945ea6954b348de3e7b1bd11f896来源:牛客网输入描述:输入有多组数据,每组数据包含一个正整数n (1≤n≤2147483647)和一个正整数r (2≤r≤16)。其中n为十进制整数,r为目标进制。输出描述:对应每组输入,输出整数n转换...原创 2019-10-07 13:03:57 · 242 阅读 · 0 评论 -
PAT乙级(8)1003. 我要通过!(20) 、说反话(water)
PAT乙级(8)1003. 我要通过!(20) 、说反话(water)题目描述“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。 得到“答案正确”的条件是: 1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符; 2. 任意形如 xPATx 的字符串都可以获得“...原创 2019-10-10 10:17:48 · 119 阅读 · 0 评论 -
算法练习:判断一个链表是否为回文结构
判断一个链表是否为回文结构回文,就是有个对称轴,123 321 ,1221,121.这种的数的结构就是回文结构。有个比较巧妙的办法,准备一个栈,将链表中的每个节点的值依次压入栈中,然后让栈中的数依次出栈,让每个出栈的数去比较链表中的数,如果之后最后一个数都相等,那就是回文,如果有一个数不符,那就不是。123454321 进栈之后就是 123454321 (栈顶)。每次出栈...原创 2019-07-31 10:40:43 · 202 阅读 · 0 评论 -
PAT乙级(2)NowCoder小定律(水题) 害死人不偿命的(3n+1)猜想 (水题)
PAT乙级(2)NowCoder小定律(水题) 害死人不偿命的(3n+1)猜想题目描述对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<50),判定该表达式的值是否为素数输入述:输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。输出描述:对于每个给定范围内的取值,如果表达式的值都为素数...原创 2019-10-02 01:08:07 · 231 阅读 · 0 评论 -
PAT乙级(1)母牛的故事 童年生活二三事
PAT乙级(1)母牛的故事 童年生活二三事题目:链接:https://www.nowcoder.com/questionTerminal/d948f2f33a5f49bc800c5a85fe001d9a来源:牛客网输入描述:输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。输出描述:对于每个测试实例,输出在第n年的时候...原创 2019-10-01 23:27:36 · 200 阅读 · 0 评论 -
剑指Offer(13)顺时针打印矩阵 包含min的栈
剑指Offer(13)顺时针打印矩阵 包含min的栈题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:1234 输出为 ...原创 2019-09-30 21:43:52 · 140 阅读 · 0 评论 -
剑指Offer(一) 数组中重复的数字,二维数组中的查找
2019年9月2日 愿你我有得有失,能哭能笑能尽欢数组中重复的数字题目一:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7,的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数组2或者3。(n个元素,n种可能的取值)思路:...原创 2019-09-02 15:58:02 · 449 阅读 · 0 评论 -
算法练习:“回”字形打印矩阵、“之字”形打印矩阵
转圈输出n*n的矩阵、进而输出 M * N 的矩阵1234 输出为 1243对于任意一个矩阵,可以找到他的位于正对角线两边界的元素,123456784329 对于这个矩阵 第一个边界元素是1 ,第二个边界元素是9。假设 1 的坐标为 (row1,cow1)假设 9 的坐标为 (row2,cow2)对于任意一个矩阵,都可以从 cow1++到 ...原创 2019-07-26 22:03:45 · 1016 阅读 · 0 评论 -
算法练习:随时找到数据流的中位数、微软折纸问题
随时找到数据流的中位数实现思路准备两个堆,一个放前 n/2 个数,另一个放后 n/2个数。比如 5 3 6 45 放到大根堆里,第二个数进来,5>3 ,将 3放到5下面。此时第一个堆里有2个数,第二个里有0个数。2-0>=2。将第一个堆的堆顶的数放入第二个堆,即小根堆,此时第一个堆里只有3 ,第二个里只有5 。6 进来, 放入小根堆3 5 64进来, 4...原创 2019-08-04 15:15:43 · 268 阅读 · 0 评论 -
算法练习:在行列都排序好的矩阵中找数、
在行列都排序好的矩阵中找数因为整个矩阵是每行每列都是排序好的。从右上角的数(记做a)开始判断,如果 a>7, a的列坐标-1, 判断 a与7的关系如果 a<7,a 的行坐标+1, 判断 a与 7 的关系对于任意一个K ,每次判断,a的只能往前或者往下,只有这两种可能因为 这个点想左移动 最多m ,向下移动最多n ,所以时间复杂度是 O(M+N)...原创 2019-07-31 10:41:16 · 239 阅读 · 0 评论 -
算法练习:使用最少的钱切割金条、二叉树的三序遍历的非递归实现
使用最少的钱切割金条哈夫曼编码最小生成树比如现在数组里的数为 1,4,6,8,3,9.先把这个数组中的数组成一个小根堆,每次将最小的两个数弹出,相加,再放回去。每次累计相加结果直到这个里只有一个数。那么累加结果就是要找的最小代价。public static int lessMoney(int[] arr) { PriorityQueue<...原创 2019-08-03 19:03:04 · 168 阅读 · 0 评论 -
优秀的算法设计(一)--布隆过滤器
参考博客:https://blog.csdn.net/xinzhongtianxia/article/details/81294922布隆过滤器百度百科:布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识...原创 2019-07-29 14:25:43 · 373 阅读 · 0 评论 -
左神算法第二章 桶排序、O(1)时间内求解栈内的最小元素
第二章比较器当比较的东西为一个对象时,系统不知道你要比较的是什么,会拿对象在内存中的地址去比较,但这并不是咱们的预期结果。所以要使用其他的比较办法,java中有比较器Comparator,实现这个接口就可以进行比较。public static class Student { public String name; public int id; public int age; ...原创 2019-07-24 02:08:23 · 196 阅读 · 0 评论 -
剑指Offer(二)替换空格,从头到尾打印链表
题目:请实现一个函数,把字符串中的每个空格替换成"%20"例如输入"We are happy."则输出"We%20are%20happy."思路:方法一,可以从头到尾扫描每个字符,遇到空格便把后面所有的字符向后移动,时间复杂度为O(n^2),暂不用方法二,扫描一遍整个字符串,每有一个空格,都往字符串末尾添加两个任意字符,维护两个指针,指针a指向新建字符数组的最后一位,指针b...原创 2019-09-03 20:09:43 · 125 阅读 · 0 评论 -
剑指offer(三)重建二叉树,二叉树的下一个节点
剑指offer(三)重建二叉树,二叉树的下一个节点题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:前序遍历中,第一个数字就是整棵树的根节点.中序遍历中,根节点之前的数字为根节点的左子树,之后...原创 2019-09-04 21:46:16 · 110 阅读 · 0 评论 -
剑指Offer(四)用两个栈实现一个队列,斐波那契数列及相关问题
剑指Offer(四)用两个栈实现一个队列,斐波那契数列及相关问题题目:用两个栈实现一个队列思路:方法一: 使用一个栈,依次压入,依次弹出,时间空间均为O(n)方法二:递归,每次输出前,先输出他的下一个节点,然后依次调用.方法三: 使用头插法,使用头插法去构建一个新的链表,这样最后的元素会在最前.例子:1 2 3 4 5 输出 5 4 3 2 1代码: class Lis...原创 2019-09-09 15:33:52 · 294 阅读 · 0 评论 -
剑指Offer(12)镜像二叉树 对称的二叉树
剑指offer(12) 镜像二叉树 对称的二叉树题目:操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ ...原创 2019-09-29 11:04:49 · 175 阅读 · 0 评论 -
剑指Offer(11) 合并链表 树的子结构
剑指offer(11) 合并链表 树的子结构题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:递归每次处理当前节点之后,递归处理下一个节点。非递归每次处理节点前判断两个链表的当前节点的大小,当某个链表遍历完之后,将另一个链表加到当前链表的最后一个节点。代码: //递归 public ListNode Merge(Li...原创 2019-09-27 21:01:18 · 181 阅读 · 0 评论 -
剑指Offer(10)有环链表 翻转链表
剑指offer(10) 有环链表 反转链表题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:快慢指针,当前一个指针和后一个指针相遇时,有环,提前结束则无.然后将慢指针指向头节点,两个指针一起走,每次都走一步,相遇时即为入口节点。(以下证明学习自牛客却顾所来径的回答)1、设置快慢指针,假如有环,他们最后一定相遇。2、两个指针分别从链表头和相遇点继续...原创 2019-09-26 16:10:54 · 542 阅读 · 0 评论 -
剑指Offer(九)调整数组 链表倒数第k个节点
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:方法1借用冒泡的思想,每两项比较,如果前偶后奇就交换。 复杂度为O(n^2)方法2空间换时间 ,新建一个数组,遍历给定数组,求出这个数组中的奇数的个数记作a,再遍历一遍数组,遇到奇数放a-1的前面,否则放后面...原创 2019-09-25 00:50:02 · 162 阅读 · 0 评论 -
剑指Offer(八)删除链表的节点 删除链表重复节点
剑指offer(八) 删除链表的节点 删除链表重复节点题目:给定单向链表的头指针和一个节点指针 定义一个函数在O(1)时间内删除该节点思路:遍历一遍等于白给 O(n)假设 1-2-3-4-5-6-7-8-9当删除 2 这个节点的时候, 把2 之后的第一个节点3复制到一个temp节点,然后将temp 这个节点里的值复制给2,将temp的指针赋给 2 ,也就是2 节...原创 2019-09-22 14:35:39 · 133 阅读 · 0 评论 -
剑指Offer(七) 二进制中1的个数 数值的整数次方
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:对于二进制数,有左移右移这样的位操作。可以判断当前数的最后一位是否为1,如果是,个数加1,不是则右移一位,继续判断。这种方法的弊端是如果输出一个负数,会出现死循环。因为在负数中,二级制的第一位也是符号位,也就是1,右移之后不可以直接将符号位的1右移,还需要将第二位补为1.(>>右移运算符将一个运算对象...原创 2019-09-20 20:10:43 · 165 阅读 · 0 评论