- 博客(13)
- 收藏
- 关注
原创 LC33.搜索旋转排序数组
在前后反转了半段的升序数组上找到特定数字的索引,如果没有,返回-1时间复杂度logn二分查找的方法,分类比较麻烦先判断数字在上半段还是下半段,上半段的上半段、上半段的下半段,下半段的下半段、下半段的上半段又各自分类讨论。class Solution {public: int binarysearch(vector<int>& nums, int a,int b, int target, int first){ if(a>b)
2021-03-29 22:38:04
127
原创 LC135.分发糖果
N个孩子分糖果,每个孩子至少一颗糖果,相邻分高的孩子获得更多糖果。时间N,空间1往前遍历,递增的话每次比上一次多加一,递减的话加上当前递减序列长度。若递减序列长度超过上一个递增序列,则多加一个。class Solution {public: int candy(vector<int>& ratings) { int ans = ratings.size(); int pre = 0; bool add = true;
2021-03-29 21:54:45
187
原创 PAT A1154
很简单的一道题,前期卡在了第二个段错误后来发现颜色的编号是int型范围,果然把10010大小的bool哈希数字换成了set此处还是有点紧张,因为担心set超时,不过还好过了#include <iostream>#include <map>#include <string>#include <cstring>#include <ve...
2019-03-12 14:50:55
162
原创 PAT A1153
很头疼的卡在了倒数第二个case:运行超时新了解了一个STL叫做unordered_map据说它的速度比map快一些但是我换用了unordere_map做,依然超时。。。再后来看了别人地代码,发现正好这里地一串字符是三个数字,可以取巧地用一个1000大小地int型哈希数组来处理终于解决了超时问题。综上所述:以后要少用map,尽量用哈希数组此外cin和cout的时间复杂度也不容小觑...
2019-03-11 23:56:33
272
原创 PAT A1150
200个城市。给出M条路经对每一条路径进行判断最后输出一条满足条件的最短路径有三种情况每个点都访问一次并最后回到原点每个点都访问并最后回到原点,但是存在重复访问其他情况简单题,难点在于分类讨论,要细致到每一个点。总体来讲是个水题。思路先用一个矩阵存路径信息,然后每次用一个数组存路径信息PAT的题目,内存超限问题很少见,可以尽量用内存来换时间debug中间卡在最后一个ca...
2019-03-11 00:05:57
221
原创 PAT A1149
给出10000对冲突项目,再给出含有1000个项目的链表,要检测这个链表里面有没有冲突项目。项目编号为五位数字我直接莽 竟然过了。先开一个100000大小的vector哈希数组,存放冲突项目,这里每对只存了一次,因为如果两个都在链表里的话,肯定会遍历到开一个100000大小的bool数组#include <iostream>#include <vector>...
2019-03-10 21:47:49
248
原创 PAT A1141 心得
PAT A1141的学习心得需要用到一个map的排序,和一个大小写的转化,这里新学了一些处理方法。map无法进行排序,这里的处理方法是将map中的元素全部放入vector中,再在vector中运用sort进行排序,这是个笨方法但是可行。因为此题不区分大小写,输出的都是小写。这里学会了一个新的函数 transform如果使用string类,可以使用#include 里的如下方法进行大小写...
2019-03-10 17:15:33
229
原创 PAT A1140 学习心得
这里用到了一个将int型转化为string型的函数机试可以用但是VS2010不能用int型转化为string将int改为long long之后就可以了to_string()string change(string x){ string asd; char c=x[0]; long long num=1; for(int i=1;i&lt;x.length();i++){ if...
2019-03-10 17:15:20
173
原创 PAT A1147
通过完全二叉树的层序遍历序列,直接输出其后序遍历序列void postout(int a[],int index){ if(index*2<=M){ postout(a,index*2); } if(index*2+1<=M){ postout(a,index*2+1); } cout<<a[index]; if(index!=1){ cout&...
2019-03-10 17:14:31
152
原创 PAT A1146
函数引用数组,不需要加&amp;自动对原数组中的元素进行操作,修改数据直接在原数组中进行。#include &lt;iostream&gt;#include &lt;vector&gt;#include &lt;cstring&gt;#include &lt;algorithm&gt;using namespace std; int
2019-03-10 14:08:36
233
原创 PAT A1145
哈希表的题,这里忘了一些数据结构的相关知识判断素数的函数bool isprime(int index){ if(index<2) return false; if(index==2||index==3) return true; int x=(int)sqrt(1.0*index);//记笔记 for(int i=2;i<=x;i++){ if(index%i...
2019-03-10 12:13:28
186
原创 PAT A1144
输出一个int型序列的第一个不存在的正数。思路,先将所有数据存入数组。然后排序。先遍历完所有负数,再逐个遍历正数。一开始未考虑 所有数字都小于零的可能。后来又未考虑 int数组会把所有未被定义的元素赋值为0#include <cstdio>#include <algorithm>#include <iostream>using names...
2019-03-10 00:11:43
114
转载 PAT A1143
给出一个二叉排序树的前序序列,再任意给两个点,求两个点的最小祖先一开始:按照套路,先建树,然后遍历树的思想。建树采用输入一个点然后插入树的方法。遍历树用了map数组。此时有三个点运行超时,cin、cout改为scanf和printf都未能解决问题。于是开始从库函数下手。后来发现,map数组改为使用int数组,运行变快了原来用的遍历方法是用两个vector数组保存树根到两个点的路径,...
2019-03-09 20:09:39
266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人