![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题笔记
文章平均质量分 90
风一样的年代
这个作者很懒,什么都没留下…
展开
-
PAT 1014. Waiting in Line
【题目链接】基本思路:设置队列数组qInside[i]用来存放第i个窗口前对应的等待客户,队列qBehind用来存放黄线以外的等待客户。然后访问每个窗口前等待队列的队首元素,即customer编号。找出这些顾客中交易时间的最小值,假设此时对应的窗口编号为j,则弹出qInside[j]的队首元素,此时若qBehind非空,则将其队首元素压入qInside[j]。最后再对每个窗口前的等待队列进行一原创 2015-05-20 09:02:46 · 333 阅读 · 0 评论 -
2017京东春招实习生招聘编程题
题目描述: 有一条很长的队伍,队伍里面一共有n个人。所有的人分为三类:警察,小偷和普通人。 将队伍里面的人从前到后由1到n编号,编号为i的人与编号为j的人的距离为i与j之差的绝对值。 每一个警察有一个能力值x,表示他能够监视与他距离不超过x的所有人, 小偷被警察发现当且仅当他被一个或多个警察监视到。你知道在整条队伍中,一共有多少个小偷会被警察发现吗? 输入: 输入有两行,第一行一个数n(1<...原创 2018-03-17 20:31:12 · 433 阅读 · 0 评论 -
剑指offer12. 打印1到最大到n位数
题意:输入数字n,按顺序打印从1到最大的n位十进制数。思路:为了避免输入的n太大导致最后出现溢出,我们可以把这个题看作是字符串的全排列,每一个字符都表示0-9中的一个数字,这样我们就可以利用dfs递归的设置每一个数字,知道设置完n个数字为止。void dfs(string str, int n, int depth){ if(depth == n) { int r...原创 2018-03-17 20:06:25 · 137 阅读 · 0 评论 -
PAT 1007. Maximum Subsequence Sum
【题目链接】看完这个题目的时候我就想到了曾经做过的一个求完美数列的题目,用的是两点论的思想,这题好像也差不多。本题的关键就是如何确定最大子序列的起始位置i和j,我们用sum变量(初始化为0)来记录元素的和,MaxSum(初始化为负数)来记录最大子序列的和,sum从第一个非负数起开始累加同时更新MaxSum,若sum累加到第k1个位置的时候小于0了,则将sum重置为0,令temp=k1+1,其中原创 2015-05-17 10:23:14 · 415 阅读 · 0 评论 -
PAT 1022. Digital Library
【题目链接】题意:给定一组图书信息,查询与作者,出版社等等图书信息对应的图书,并升序输出这些图书的ID,图书ID必须是七位数字。思路,设置一个map数组,键为图书信息,用一个string变量来保存,而值为对应的图书ID,用一个set容器来存储。这样形成键值对有利于节省图书的查询时间,否则,单纯地进行暴力搜索可能会超时。代码如下:#include #include #incl原创 2015-06-03 21:29:09 · 626 阅读 · 0 评论 -
PAT 1021. Deepest Root
【题目链接】题目大意:给定一个无向图,如果它没有环且是连通的则证明是树,那么就要找出一个结点集,使得集合中的任意一点作为树的根节点,都能使得树的深度达到最大。否则,如果该图不是树,则要求输出图的连通分量的个数。思路:本题可以用并查集或者dfs求连通分量个数。假设已经是树了,如何求deepest root呢?很显然的一个做法就是对树中的每个结点进行dfs搜索,每一次dfs都记下树能达到的最大原创 2015-05-31 09:05:26 · 523 阅读 · 0 评论 -
PAT 1018. Public Bike Management
这题就是求先最短路径,当有多条最短路径的时候按照如下原则择优:sent的自行车较少的更优,如果sent的自行车数量相同,则take back的自行车数量最少的更优。第一次提交的时候只过了4个case,原因在于:只要前面的station自行车数量不足,就必须从PBMC派送自行车,无论后面路径上的自行车数量是否有多余,也就是说是一个不可逆转的过程。后来改写了程序,在Dijkstra算法的基础上,逐原创 2015-05-29 13:52:10 · 503 阅读 · 0 评论 -
PAT 1017. Queueing at Bank
【题目链接】这道题比1014要简单,但是最后一个case始终过不了,暂时记载在这篇博文上。思路和1014差不多,只不过这题所有的人都站在了黄线外等待,只有窗口空闲才去该窗口获取服务。需要注意的有以下几点:1、客户只要在17点01分之前到达,就一定有窗口对此客户服务到底,也就是说他开始接受服务的时间可以在17点01分及之后的时间。2、当有窗口空闲,但是下一位顾客还未到来时,窗口需要等原创 2015-05-29 13:34:24 · 269 阅读 · 0 评论 -
PAT 1003. Emergency
一开始看错了题目,以为第一个输出是要求最短距离,后来才发现是要求最短路径的条数。对于最短路径的条数和点权之和我们可以分别用两个数组numberPath[]和numberTeam[]来实现,numberPath[i]记录从起点到顶点i的最短路径的条数,numberTeam[i]记录从从起点到顶点i的所有最短路径中点权之和的最大值。然后当加入新的顶点之后得到的距离等于原来的最短距离,则对numberP原创 2015-05-15 13:47:32 · 397 阅读 · 0 评论 -
LeetCode 29. Divide Two Integers
题目:Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.思路:最简单的办法就是不断用被除数减去除数,看能减多少次即为所求的商,但是这样复杂度可以达到O(n),经测试会超时。考虑到任何一个数都可以表示为以2的幂为底的一组基的线性组合...原创 2018-03-18 15:47:15 · 118 阅读 · 0 评论