当前位置:   article > 正文

2019-06-24今天尝试写了PAT乙级的前两道题好在在LeetCode里面见过(然而还是有些点忘记了,哈哈哈哈哈)所以做的比较快,这个东西相比于力扣更考研基本功,所以加油哇PAT和LeetCode_pta和力扣哪个难

pta和力扣哪个难

啊容我吐槽一下PAT,乙级比较宽容,看到时间限制在400ms时候,觉得很感动……然后比较烦的就是它的测试用例不可见,以至于我过不去不知道问题在哪,于是打开VS测试了很多遍觉得没问题,废了一点那时间……还有就是报错看起来有点累……还有头文件需要背……代码也需要背……

1001 害死人不偿命的(3n+1)猜想

N限制在了1000内,比较爽。基本上题干就是思路……

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a; int i = 0;
  6. cin >> a;
  7. while (a != 1)
  8. {
  9. if (a % 2 == 0)
  10. {
  11. a = a / 2;
  12. i++;
  13. }
  14. else
  15. {
  16. a = 3 * a + 1;
  17. a = a / 2;
  18. i++;
  19. }
  20. }
  21. cout << i;
  22. return 0;
  23. }

犯了一个低级错误,第一次忘了while循环,所以直接if后直接结束!!这么蠢的错误,以后一定要避免!!

1002 写出这个数 (20 分)

也很简单……我记得力扣做过,记住了很大一部分。

  1. #include<iostream>
  2. #include <stack>
  3. using namespace std;
  4. int main()
  5. { stack<int>ans;
  6. string ss;cin>>ss;
  7. int count=0;
  8. int sum=0;int res;
  9. for(int j=0;j<ss.size();j++)
  10. {
  11. sum+=ss[j]-'0';
  12. }
  13. while(sum>=10)
  14. {
  15. res=sum%10;
  16. ans.push(res);
  17. sum=sum/10;
  18. count++;
  19. }
  20. ans.push(sum);
  21. count++;
  22. for(int i=count;i>0;i--)
  23. {
  24. res=ans.top();
  25. ans.pop();
  26. if(res==0)
  27. cout<<"ling";
  28. else if(res==1)
  29. cout<<"yi";
  30. else if(res==2)
  31. cout<<"er";
  32. else if(res==3)
  33. cout<<"san";
  34. else if(res==4)
  35. cout<<"si";
  36. else if(res==5)
  37. cout<<"wu";
  38. else if(res==6)
  39. cout<<"liu";
  40. else if(res==7)
  41. cout<<"qi";
  42. else if(res==8)
  43. cout<<"ba";
  44. else if(res==9)
  45. cout<<"jiu";
  46. if(i!=1)
  47. cout<<" ";
  48. }
  49. return 0;
  50. }

思路上没有障碍,主要说说自己改良的点和错误的点。

首先前几次通不过去,主要是数超范围了,12345678909876543210123456789这个数好像long long都超了,这个问题力扣我是接触过的,之前的CSDN中也写到了,直接用string读入!!然后string-'0'直接获得各个位数……

这个我之前在文章里也强调过,有点印象,但是我觉得没必要,可是同志们,这样直接获得数字省了大把时间!!这第二次栽跟头了,记住了!

还有一点就是“哎哎哎就是那啥那啥啊啊啊啊我忘了怎么用”的一个方法,用在一一对应的转化上,就是数组下标和内容的对应关系,比如str[ling yi er san]对应下标是0 1 2 3 比用10句if看起来美观多了…

以上这两点是我遇见过然后忘记的内容,这次牢牢记下!

还有就是一些头文件,还有模板,慢慢自己总结,到时候往上套用就行了!

然后开始刷力扣,一上来就是一个困难题(合并k个列表)……反正我没打算能写出来,就想了一会儿看了解析(暴力法,两个两个合并……),根据暴力法自己改编了一下,然后在传参和定义函数那里出现了问题,借助评论改了一波,还有bug……明儿再改!!

贴个错误代码,希望明天改好!

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode(int x) : val(x), next(NULL) {}
  7. * };
  8. */
  9. class Solution {
  10. public:
  11. ListNode *merge( ListNode *l1,ListNode *l2)
  12. {
  13. ListNode* head=new ListNode(0);
  14. ListNode* ss=head;
  15. while(l1!=NULL&&l2!=NULL)
  16. {
  17. if(l1->val>=l2->val)
  18. {
  19. ss->next=l2;
  20. ss=ss->next;
  21. l2=l2->next;
  22. }
  23. else
  24. {
  25. ss->next=l1;
  26. l1=l1->next;
  27. ss=ss->next;
  28. }
  29. }
  30. if(l1!=NULL)
  31. ss->next=l1;
  32. else ss->next=l2;
  33. return head;
  34. }
  35. ListNode* mergeKLists(vector<ListNode*>& lists)
  36. { int l=lists.size();
  37. int i;
  38. for(i=0;i<l;i++)
  39. {
  40. if(i>0)
  41. lists[i+1]=merge( lists[i],lists[i+1]);
  42. }
  43. return lists[0];
  44. }
  45. };

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/967694
推荐阅读
相关标签
  

闽ICP备14008679号