自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PAT 12.7甲级 满分代码

题目记不清了,不写了。代码是考场上带回来的。整体不难,至少比今年9月的简单多了,可能是因为9月 参加的人数多,提高区分度,另外好像涉及保送生的机试问题?我的代码水平一般,用容器很多的,后来想想大多都没必要。仅供参考吧,不多说了 早点睡 还有十几天考试了。第一题#include <iostream>#include <string>#include <vec...

2019-12-09 00:14:59 99

原创 PAT甲级 1056 Mice and Rice

首先说明:本题跟 老鼠和大米 一点关系都没有,这层壳子套上去 显得很无聊;另外,即便去掉这层壳子,题目仍较难理解。总的来讲:给定了n个得分(有编号的)–> 依次序、每m个一组 --> 比出一个最大的 --> 晋级下一轮 --> 组内其它人 立即淘汰 且和其它组里淘汰的人 同排名 --> 晋级的人 再分组、排名、淘汰和晋级另外比较是有次序的,第三行则给定了比较的次...

2019-08-08 21:12:05 129

原创 PAT 甲级 1047 Student List for Course

和1039的思路类似,本题是将“按照学生分类的一组数据” 整理成 “按照课程分类的数据”。如果能熟悉各种容器的用法,并组合使用。将使得思路清晰,代码简化。但应该明确,使用容器 是要小小的牺牲时间的,如:string比char * 费时,vector比普通数组费时。此处不讲容器的使用,而只给出代码:// 19.15 -- 19.30 21/25分#include <iostream&...

2019-08-01 19:51:08 97

原创 PAT 甲级 1024 回文字符串

题意很清晰,直接给出代码// 20.06 -- 20.27#include <iostream>#include <string>using namespace std;string reverse(string s){ char c; for (int i = 0, j = s.size() - 1; i <= j; i++, j--) { ...

2019-07-30 20:42:04 87

原创 PAT 甲级 1088 有理数计算

说明几个要点:1、题目给的是两个分数,看成是两个分子、两个分母即可。2、负号不需要特殊处理,因为负号总是给到分子。3、输入数据以后,分别得到 加运算的分子和分母、减运算的分子和分母、乘法的分子和分母、除法的分子和分母,这个过程只需将简单的算术转化为代码即可。4、2的过程中需要得到最小公倍数和最大公约数。5、所有需要的数据得到后,反复调用输出函数simply();代码:#include...

2019-07-24 21:23:53 130

原创 PAT 甲级 1075 PAT Judge

需要全面综合考虑的一道题!代码:#include <iostream>#include <vector>#include <string>#include <algorithm>#include <iomanip>#include <sstream>using namespace std;struct i...

2019-04-16 20:45:25 112

原创 PAT 1025 PAT Ranking

更加体会到:在充分理解题意后,一定要选择合适的、能完整满足需求的存储结构。比如本题,一开始我是用vector<pair<string,int>> 存放信息,但越写下去 就越感到不便,只得改成用结构体数组来存放。整体思路:按照顺序对每一个location的考生逐批次处理,对于每一location的考生,我们需要得到的是学号location号码分数每个考生在此loc...

2019-04-12 22:41:10 65

原创 PAT 甲级 1012 The Best Rank

对四门课程分别排序,这样每一个学生就有四个排名,取排名最高的那个注意优先级,A > C > M > E优先级的处理,是通过 四个for循环的先后顺序 来实现的继续练习了sort()中比较函数的自定义如果使用map,那么只能是map<int ,stirng > 但单科分数可能出现重复,所以又必须用multimap<int ,stirng>但mult...

2019-04-09 22:37:07 158

原创 PAT甲级 1062 Talent and Virtue

本题考查的是:把一个人的信息 放到结构体考虑对结构体的分类处理和排序核心考点是sort的第三个参数–比较函数的自定义;sort (待比较 A,待比较 B,compare())如果 A compare B ,函数返回值是true, 无论A B本身如何,就认为A小于B,把A放在B的前面#include <vector>#include <string>#incl...

2019-04-09 10:10:50 128

原创 leetcode 31

刚开始的时候,没怎么理解题意,不知道具体是要干什么。后来仔细想了下,是这么回事:给定一个数组,比如1,7,2,4,1我们不妨把它看作数字 17241,题目要求寻找下一个更大的排列,在数字的角度来看,我们的任务就是重新排列它,找到比17241更大的数字中 最下的那一个,也就是 17412,那么如何来操作呢?我们设想这样一个排列:6,5,4,3,2,1; 很显然,没有比它更大的了,也即从左到右...

2019-03-12 22:13:43 88

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

注意两点:加入一个头结点,方便操作循环内容就是 修改指针,指针后移。如果原来链表有偶数个结点,循环条件需要q!=NULL,如果奇数个结点 需要q-&gt;next!=NULLclass Solution {public: ListNode* swapPairs(ListNode* head) { if (!head || !head-&gt;next) //如果为空表或者就一个...

2019-03-08 20:32:00 78

原创 leetcode 19 删除链表的倒数第N个节点

一轮遍历,把指向每个结点的指针存到vector&lt;ListNode *&gt; point;遍历完,就知道倒数第n个结点 所对应的相关指针在容器中找到涉及到的两个指针,赋值一次并且delete 即可注意:如果删除的倒数第n个结点正好是第一个,需要单独处理代码:class Solution {public: ListNode* removeNthFromEnd(ListNode* ...

2019-03-06 19:50:03 71

原创 leetcode15 三数之和

方法如下:先排序,外部循环 i 从 0 到 nums.size()-2;内部循环 j 从 i+1始,k从nums.size()-1始;如果发现nums[ j ] +nums[ k ] == - num[ i ],在num[ i ],nums[ j ],nums[ k ] 这三个数构成的数组和已经得到的满足条件的任一数组都不重复的情况下,把它pushback进入res;其中issame()是...

2019-03-02 11:38:40 83

原创 leetcode 012 整数转罗马数字

很傻的方法,穷举;用4个int的数组,分别存放num的千、百、十、个位,然后针对每一位列出各种情况;事实证明,占用内存和耗时 都很高;class Solution {public: string intToRoman(int num) { int temp[4] = {0}; string res; for (int i = 0; i &lt; 4; i++) { ...

2019-02-28 22:24:13 85

原创 leecode 8 字符串转换整数 (atoi)

tag保存的是数的符号,无符号长长整型的 res 用来暂时保存字符串里的数据(不含符号位)思路比较简单:空格都pass掉以后,如果第一个字符不是数字,返回0;否则,这一位如果是符号,把符号存到tag,从下一位开始取数,如果没有符号位,直接开始取数;数取完了以后(有两种情况,①后面又出现了字母 ②字符串结束了),内循环和外循环都要break,所以设置一个flag位,当内循环break了 立马外...

2018-12-25 13:36:11 189 1

原创 leetcode 005 最长回文子串

思路和003很相似,003是找最长的不重复序列,并返回长度;对于外循环的每一个i,判断它后面的每一个j,是否能使得s【i】到s【j】构成回文序列;如果构成了回文序列,count保存此时的回文序列长度,out保存的是程序到现在为止、已经得到的最大长度;如果count&gt;out了,out=count,并让res保存现在这个更长一点的回文字符串;当然也可能根本就没有回文串,最后判断一下即可;...

2018-12-23 21:06:04 106

原创 leetcode 198 打家劫舍

和leetcode 70 爬楼梯 解决问题的思想很像;要求最大和,可以分两种情况:① 第n个数选中,结果是 nums[n-1]+前n-2个数的最大和;② 第n个数不选,结果是前n-1个数的最大和;最终的结果是max(①,②);代码1:单纯递归的方法,但超时;class Solution {public: static int rob(vector&lt;int&gt;&amp; n...

2018-12-22 10:55:15 211 1

原创 leetcode 160 相交链表

学数据结构的时候见过这种算法,所以直接写出来了;核心思想就是先求两个链表的长度差,然后指针后移 “长度差” 个单位,这样两个链表就可以同步操作了;时间复杂度 O(n),空间复杂度O(1);class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if (!head...

2018-12-16 16:52:03 100

原创 leetcode 111 最小深度

层次遍历的过程中,用depth记录当前层次的深度,只要发现结点的左右指针均为空,立即返回此时的depth;代码:class Solution {public: int minDepth(TreeNode* root) { if (root == NULL) return 0; queue&lt;TreeNode *&gt; q; q.push(root); int dept...

2018-12-11 19:52:10 95

原创 leetcode 107 二叉树的层次遍历 II

思路来自104,作层序遍历,因为层序遍历就是从上到下,从左到右 而要求是从下到上,从左到右输出,只需稍作修改;vector&lt;vector&gt; out 是最终的输出;temp 是临时的容器,对二叉树作层序遍历,把某一层的数据都放入temp,该层处理完时,把temp放进out;需要注意的是,temp放入out后,需要clear();这样得到的out每一个单元 是某一层的从左到右的遍历...

2018-12-09 17:36:20 71

原创 leetcode 083 删除排序链表中的重复元素

① 粗暴的双重循环这是最开始通过的算法,用的是粗暴的双重循环,原因是没注意是有序链表;对于外循环的每一个节点 内循环从它的下一个开始,判断是不是重复的,注意重复和不重复的指针移动情况是不一样的;注意用“指针判空”控制边界条件的时候,慎用 p-&gt;next!=NULL 这样的条件,在自己电脑上没问题,提交leetcode就说我通过空指针访问;代码:class Solution {pu...

2018-12-08 10:23:12 88

原创 leetcode 70 爬楼梯

当n=1时,显然结果为1当n=2时,显然结果为2思路:当有n阶时 最后一步要么是1阶 要么2阶;这样的话,上n阶的方法数目 = 上n-1阶的方法数+上n-2阶的方法数;所以:res(n)= 1 , n为1;2 , n为2;res(n-1)+ res(n-2) , n &gt; 2;那么,这个问题 和斐波那契数列 又有什么不同呢?下面是我对于该问题的探索历程:①分情况讨论...

2018-12-07 16:20:36 85

原创 leetcode 066 加一

思路:① 如果末位<9,该位++② 否则,从末位开始 通过i的移动,找第一个不是9的 让它++,后面的位全部置0注意:在②中,可能这个数组全是9 那么i最终是-1 再用i访问数组会出错,这时干脆先clear(),然后push_back(1),然后再放入 digits.size个0class Solution {public: static vector&lt;int&gt; plusO...

2018-12-05 16:10:30 61

原创 leetcode 053 最大子序和

#include&lt;iostream&gt;#include&lt;vector&gt;using namespace std;//双重循环,时间复杂度O(n²)//对于外循环的每一个i,通过内循环j的移动 并用sum依次计算以i为开头的 长度分别为1 2 3 4……的子串的和//每得到一个sum,都与max比较,如果sum&gt;max,把sum给max//每一次内循环开始之前...

2018-12-04 21:32:49 138

原创 leetcode 028 字符串匹配

暴力解法总是最容易想到的。i控制外循环,遍历母串;j控制内循环,遍历子串;对于每一个外循环的i,判断从i开始的 needle.size()个数的 字数,是否和子串字符一一对应,如果发现不对应,内循环break内循环每结束一次,都判断一下是否完全匹配了,如果是 返回此时的i;否则继续下一次内循环。#include &lt;iostream&gt;#include &lt;vector&g...

2018-12-04 20:57:10 241

空空如也

空空如也

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

TA关注的人

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