自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 问答 (1)
  • 收藏
  • 关注

原创 【XiaoTu learn md】

Study Diary2022-1-17RikaSummaryThis is the first blog written in markdown.Say SomethingYou can also Search to learn more about markdown.markdownA new style of writing blog.There are some advantageseasy to writeglobally usedIt is also easy

2022-01-17 22:53:04 147

原创 [一起刷leetcode吧] 13.Roman to Integer

Roman to Integer题目描述输入一个罗马数字字符串,转换成整性输出分析???是在逗我吧,刚吐槽完上一题,给我来一这个。模拟,暴力;唯一有点小思想的,就是需要判断一下当前是两个字母的还是一个字母的不废话了,上代码代码class Solution {public: int romanToInt(string s) { map<string, int> m; string sub = ""; int value = 0; m["M"] = 100

2021-04-18 14:05:05 64

原创 [一起刷leetcode吧] 12.Integer to Roman

Integer to Roman题目描述输入一个整数,将其转换为罗马数字字符串输出分析凑数模拟题,暴力解代码class Solution {public: string intToRoman(int num) { string s = ""; map<int, string> m; int a[13] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; m[1000] = "M"; m[

2021-04-18 13:32:43 71

原创 [一起刷leetcode吧] 11.Container With Most Water

Container With Most Water题目描述输入一个int类型的数组h,找到最大的min(h[i], h[j]) * (j - i)分析以前数学和物理竞赛的时候经常说的一句话,题干越短,题目越难其实看了下数据范围 n, h[i] <= 3 * 10 ^ 4代码不写得太烂,应该也能在1秒内跑完;但这个题一定有一个精妙的算法,猜了下应该是O(n),回想了一下我知道的一些算法,应该都不是,于是看了题解。双指针希望下次遇到同样算法的题时,不用看题解了,算法和证明如下:维护

2021-04-17 14:24:43 74

原创 [一起刷leetcode吧] 10.Regular Expression Matching

Regular Expression Matching题目描述输入一个字符串s和一个匹配模式p,返回两者是否匹配。匹配规则如下.可以替代任何字符*可以重复其之前的字符任何次数(包括0次)特别的 .*表示任意次数的. 而不是某个确定字符的任意次数分析终于刷到一个DP题了,以前做题的时候总是觉得DP最难,现在最想遇到DP题,不想写数据结构。f[i, j]表示s[:i+1] p[:j+1]是否匹配,状态转移方程如下:s[i] == p[j] or p[j] == '.'f[i, j]

2021-04-17 13:49:23 56

原创 [一起刷leetcode吧] 9.Palindrome Number

Palindrome Number题目描述输入一个数,判断是不是回文数分析没错,就是这么简单代码class Solution {public: bool isPalindrome(int x) { int num[12] = {0}, cur = 0; if (x < 0) return false; if (x < 10) return true; while (x > 0) { num[cur] = x % 10; x

2021-04-15 22:33:17 45

原创 [一起刷leetcode吧] 8.String to Integer(atoi)

String to Integer(atoi)题目描述输入一个字符串,将其转换为int类型数字,规则如下:1.去掉头部空格2.处理-+3.处理数字4.处理尾部非数字5.若溢出,则取int边界分析模拟,没啥说的代码class Solution {public: int myAtoi(string s) { int cur = 0, len = s.size(), flag = 1; long long ans = 0; while (cur < len &a

2021-04-15 22:23:46 49

原创 [一起刷leetcode吧] 7.Reverse Integer

Reverse Integer题目描述输入一个int类型的数,将其反转,如果溢出了,则返回0。分析模拟,为避免中间过程中溢出,在long下面运算(偷了个懒)。代码class Solution {public: int reverse(int x) { if (x == 0) return 0; long raw = long(x), rev = 0, flag = 1, lower = 0, upper = 0; int ans = 0, b[20] = { 0 }

2021-04-13 20:22:47 60

原创 [一起刷leetcode吧] 6.ZigZag Conversion

ZigZag Conversion题目描述输入一个字符串s和一个正整数n。将s按照长度为n的Z字形排列。按行输出Z字形字符串。写不清楚,自己去看LeetCode吧。分析直观的两个方法模拟看出每一行的下标的规则看出规则应该比较简单,也没有空间复杂度,O(n)。第一行和最后一行(hang)为一波,中间那几行(hang)为一波。代码class Solution {public: string convert(string s, int numRows) { int len

2021-04-13 19:11:36 82

原创 [一起刷leetcode吧] 5.Longest Palindromic Substring

Longest Palindromic Substring题目描述输入一个字符串,输出其中最长的回文子串分析前面那题暴力解了,这个题也想着暴力解。n方循环子串头尾,然后判断该子串是否回文。O(n^3),n<1000。按理说写得好一点也会在1秒内跑出来。但得看常数和机器能力。想了下回文串应该是对称的,不需要n方循环,循环中间的就可以了,这样就变成了O(n^2)算法。不过需要循环两次,奇数和偶数的回文不一样。然后注意下边界,就这样子。代码class Solution {public:

2021-04-12 21:03:28 54

原创 [一起刷leetcode吧] 4.Median of Two Sorted Arrays

Median of Two Arrays题目描述输入两个升序数组,输出所有数字的中位数(如果中位数有两个,则为其平均值)分析这题第一感觉应该是个O(log(m+n))的算法。但看了下数据范围,1 <= m + n <= 2000。这不偷懒做个O(m+n)都是对题目的不尊重吧。(两题都刷完再来写O(log(m+n)))。思路应该比较简单,维护两个指针,从两个数组的头开始,哪个数字小就自增,直到达到中位数。处理的时候注意边界值。没什么要分析的。代码class Solution {p

2021-04-12 20:24:30 49

原创 [一起刷leetcode吧] 3.Longest Substring Without Repeating Characters

Longest Substring Without Repeating Characters题目描述输入一个字符串,输出其中最长的,没有重复字符的子串长度分析按照标准的思考思路,应该要分析数据范围(s.length <= 50000),那么就不能用O(n^2)算法,排除遍历左右边界的枚举。考虑O(nlogn)和O(n)。这题看着不像能二分的样子,所以O(n)。维护左右边界游标l, r,均只能向右移动,若游标中间的子串s[l, r+1]没有重复字符,则r++,否则l++。是否有重复字符则维护

2021-04-11 21:12:45 80 1

原创 [一起刷leetcode吧] 2. Add Two Numbers

Add Two Numbers题目理解输入两个单向列表,输出两个列表进行十进制加法的结果分析模拟最原始的十进制加法,进行加法和进位处理,判断链表有没有用完代码class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* l3 = new ListNode(); ListNode* cursor = new ListNode(); cursor = l3; i

2021-04-11 21:03:50 69

原创 PAT-A 1009. Product of Polynomials (25)

注意点: 把两个多项式每一项分别相乘,然后每一项结果用一个插入排序放入到一个序列中去。注意几项次数相同的相加为零的情况。代码:#include<iostream>#include<iomanip>using namespace std;struct Elem{ double co; int ex;};int main(){ struct Elem a[20], b[20],

2017-08-23 23:22:20 181

原创 PAT-A 1008. Elevator (20)

注意点: 简单模拟题代码:#include<iostream>using namespace std;int main(){ int a, b; int i, n, ans; cin >> n; a = 0; ans = n * 5; for (i = 0; i < n; i++) { cin >> b; if (b > a) ans +

2017-08-23 22:32:18 1125

原创 PAT-A 1007. Maximum Subsequence Sum (25)

注意点: 最大子序列的和,又要选取序号最小的。和为0的与和为负数的要分开来考虑。 题中数据好像没有给出以下情况例子 1 -1 2 2 3 -1 这个结果应该是 (1) 7 1 3 (2) 7 2 3 两种算法都能通过。按照题意应该是(1)代码:#include<iostream>using namespace std;int main(){ int a[10005], s[10

2017-08-22 15:16:54 231

原创 PAT-A 1006. Sign In and Sign Out (25)

注意点: 字符串可以直接比较大小。代码:#include<iostream>#include<string>using namespace std;int main(){ string s1, s2, s3, min, max, ans1, ans2; int i, n; cin >> n; min = "23:59:59"; max = "00:00:00"; fo

2017-08-22 14:20:27 299

原创 PAT-A 1005. Spell It Right (20)

注意点: 此题是一个字符串的模拟题,注意结果为零的情况即可。代码:#include<iostream>#include<string>using namespace std;int main(){ string s; int length; int i, j, ans; int num[10]; cin >> s; string name[10] = { "zero",

2017-08-22 09:46:21 229

原创 PAT-A 1004. Counting Leaves (30)

注意点: 此题是一个层序遍历题,用简单的宽度优先搜索一遍就可以模拟出结果。代码:#include<iostream>using namespace std;struct Line{ int node; int level;};int main(){ int son[101][101]; struct Line line[111]; int left, right; i

2017-08-22 09:21:27 242

原创 PAT-A 1003. Emergency (25)

注意点: 一个单源最短路算法,需要考虑两个条件,最短路和最多队伍,有优先级。用spfa。代码:#include <iostream>#define max_Int 1<<30using namespace std;struct Road{ int d; int l; };struct Line{ int p; int l; int t; };int main(){

2017-08-22 08:50:47 265

原创 PAT-A 1002. A+B for Polynomials (25)

注意点: 保留一位小数;考虑相加为零的项;题目中没说最终结果为零的情况#include<iostream>#include<iomanip>using namespace std;struct poly{ int ye; double yc;};int main(){ struct poly a[10], b[10], ans[20]; int k1, k2, i, k3

2017-08-09 15:18:54 244

原创 PAT-A 1001. A+B Format (20)

注意点: “0” 特殊处理,末位不输出 “,”。#include <iostream>using namespace std;int main(){ int a, b; int ans, i; int s[10]; cin >> a >> b; ans = a + b; if (ans == 0) { cout << 0;

2017-08-09 14:30:50 148

原创 PAT BASIC 1035

思路:代码:arthuryzc [编辑资料] [登出]主页题目集基本信息题目列表提交列表排名帮助查看源代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include<io

2017-02-25 11:11:46 244

原创 PAT BASIC 1042

思路:这个题就是个普通的字符串处理的题,不要忘了大小写的处理,没有什么要特殊注意的点。 代码:#include<iostream>#include<string>using namespace std;int main(){ int len, i, j, max = 0; int num[26] = { 0 }; string str; char s; getline(

2017-02-25 09:47:37 196

原创 PAT BASIC 1023 组个最小数

思路:这个组最小数的方法应该说比较简单,先用一个非零的最小数放首位,然后从0到9一位位放。 代码:#include<iostream>#define n 10using namespace std;int num[10] = { 0 };int main(){ int i, j; int count; for (i = 0; i < 10; i++) cin >> nu

2017-02-11 14:47:38 257

原创 PAT BASIC 1022 D进制的A+B

思路:这是一个进制转换的题,首先确认a+b的值还是在int范围内的,所以只需要把d转换成数组。需要注意的一点就是0+0的情况。 代码:#include<iostream>using namespace std;int num[100] = { 0 };int a, b, c, d;int main(){ int count = 0; cin >> a >> b >> c; d

2017-02-11 14:37:59 196

原创 PAT BASIC 1021 个位数统计

思路:这是一个简单的模拟题,没什么要注意的。 代码:#include<iostream>#include<string>using namespace std;int num[10] = { 0 };string str;int main(){ int len, i; cin >> str; len = str.size(); for (i = 0; i < len; i

2017-02-11 14:27:46 269

原创 PAT BASIC 1020 月饼

思路:本题考察了贪心的思想,不买对的,就买贵的。先按照单价进行排序,在德才论中,我们已经会用qsort来给struct类型排序了,那么就用起来。注意这里的库存量也是double类型的,不要被样例欺骗了。代码:#include<iostream>#include<cstdlib>#include<iomanip>using namespace std;struct Objc{ doubl

2017-02-11 14:19:47 248

原创 PAT BASIC 1019 数字黑洞

思路:这个题就是疯狂地把int类型的四位数转换成array类型,然后再转换回来,没什么难度,但是不要把正反的输出方式搞错了,不要把1286弄成8621。 代码:#include<iostream>#define Last 6174using namespace std;int num, part[4] = { 0 };int check();int check(){ int i, j

2017-02-11 13:36:19 245

原创 PAT BASIC 1018 锤子剪刀布

思路:这是一个繁杂的纯粹模拟题,甚至算法里面连循环都不用,唯一的for语句是因为要处理n次。我选择使用两个嵌套的switch语句来模拟每一种情况,然后把该记录的东西都记录下来,也没有什么边界情况需要考虑,仔细。 代码:#include<iostream>using namespace std;int num[3] = { 0 };int jia[3] = { 0 }, yi[3] = { 0

2017-02-10 18:27:32 284

原创 PAT BASIC 1017 A除以B

思路:这就是一个高精度的除法问题,贪心代码的长度,所以我直接用string类型输入操作了,结果都是一样的。 所谓高精度,就是用数组,来完成比较长的数字的计算,就像我们小学的时候列竖式求解加减乘除法一样,应该来说看一眼代码就能够理解。代码:#include<iostream>#include<string>using namespace std;int main(){ string st

2017-02-10 00:26:46 298

原创 PAT BASIC 1016 部分A+B

思路:这个题,感觉突然比前面几个题简单了很多。那就是遍历一遍字符串,如果有和匹配字符一样的,就把答案乘十加匹配字符,其实也可以直接字符串相加。不过由于题目简单,都随便了。然后把两个字符串的结果相加一下。 代码:#include<iostream>#include<string>using namespace std;int main(){ string str; int s;

2017-02-10 00:13:52 221

原创 PAT BASIC 1015 德才论

思路:这个题就涉及到qsort的使用,主要是compare函数的设计。这里先引用一下一个帖子:qsort函数的使用有空自己来写一写。记得加头文件#include<cstdlib>代码:#include<iostream>#include<cstdlib>using namespace std;struct Stu{ int id; int mo; //morality int

2017-02-09 23:50:22 331

原创 PAT BASIC 1014 福尔摩斯的约会

思路:一个判定条件比较复杂的字符串处理题,感觉又是题目表达得不太明确,没什么特别要注意的,条件之间的&&和||关系不要搞错就好了。 代码:#include<iostream>#include<string>using namespace std;string a, b;int len, week, hour, minu;string eWeek[7] = { "MON ", "TUE "

2017-02-07 22:48:07 187

原创 PAT BASIC 1013 数素数

思路:这个题就是用筛法把前10000个素数都求出来,然后按照格式输出。输出的时候注意最后一个即使不是一行的末位也不用输出空格。 代码:#include<iostream>#include<math.h>using namespace std;int state[1000001];int prime[20000];void findPrime(int n);void findPrime(i

2017-02-07 16:29:57 296

原创 PAT BASIC 1012

思路:这个题大概是想考switch的使用吧,没什么难点,如果想知道cout怎么保留一位小数,去看一下我的博客然后这个题的样例2我觉得有问题,明明有5,不能说是没有。既然样例这么理解那就按照他来。 代码:#include<iostream>#include<iomanip>using namespace std;int main(){ int state[5] = { 0 }; in

2017-02-07 15:46:58 235

原创 PAT BASIC 1011

思路:这个题的难点就在于可能会超过int的范围,大概是希望我们能够使用一下高精度,毕竟是整数。 但是偷偷用double类型就能ac这个题。代码:[double]#include<iostream>#include<math.h>using namespace std;int main(){ double a, b, c; int n, i; cin >> n; for (i

2017-02-07 12:03:32 349

原创 PAT BASIC 1010

思路:这个题两个点: 1.输入需要靠EOF来判断,我们的std::cin也是有返回值的,所以我们可以用来判断是否输入while(cin>>co>>ex){ //}2.如果答案没有的话,输出0 0 代码:#include<iostream>using namespace std;struct Num{ int co; int ex;}num[2017], ans[2017

2017-02-07 11:43:32 233

原创 PAT BASIC 1009

思路:这是个字符串的题,我们利用getline(cin,str); 这个函数按行把整句话都输入进来。然后用str.size() 函数得到整个字符串的长度。然后扫一遍找到每个空格的位置,之后就可以通过空格的位置把单词一个个倒序输出来。注意头尾的边界上的细节问题。 代码:#include<iostream>#include<string>using namespace std;string st

2017-02-06 23:39:26 354

原创 PAT BASIC 1008

思路:这个题题意表达得可能没那么清楚,如果说要求只能开O(N)的数组,时间复杂度也是O(N),那就是一个比较有趣的题。我们可以用三次反转的方法来思考这个题。如果说我要把xy这个字符串的y字串移到x子串的左边,变成yx,我记x^T为将x反转,如果x=”abc”,那么x^T=”cba”。这样,这里就有一个比较有意思的式子了yx=(x^T y^T)^T也就是说我们只需要进行三次反转,就可以实现我的操作。时

2017-02-06 23:19:09 227

空空如也

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

TA关注的人

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