自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HelloWorld

路漫漫其修远兮,吾将上下而求索。

  • 博客(46)
  • 收藏
  • 关注

原创 线性空间复杂度解LeetCode 151. 翻转字符串里的单词

线性空间复杂度解LeetCode 151. 翻转字符串里的单词我的思路是先用原地算法,把多余的空格删去。再用原地转置法转置有效数组。O(1)空间复杂度删除多余空格用指针k记录当前扫描过的字符中,最后一个有效字符应该放置新数组的下标。具体代码如下:while(i < n){ while (i < n and s[i] == ' '){ i++; } while (i < n and s[i] != ' '){ s[k++]

2021-07-13 22:38:12 173 2

原创 LeetCode 115 不同的子序列

题目 不同的子序列给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)示例 1:输入: S = “rabbbit”, T = “rabbit”输出: 3解释:如下图所示, 有 3 ...

2020-04-06 15:43:23 208

原创 LeetCode 91 解码方法

Decode Ways一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 ...

2020-04-06 14:38:49 181

原创 暴力法与贪心法求解盛最多水的容器

盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。暴力法固定left=[0,heightSize−1]left=[0,heightSiz...

2020-03-11 21:20:01 222

原创 无重复字符的最长子串

无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。示例 :输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。分析在动态搜索过程中,如果能维护一个能够容纳当前最大的无重复字符的区间,并且每遇到一个已经出现的字符且上一次出现的位置在这一个区间内,则需要更新最大的无重复字符长度,并且更新当前最大的无重复字...

2020-03-11 20:08:33 174 1

原创 BFS解跳跃游戏 IV

题目跳跃游戏IV给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0)。每一步,你可以从下标 i 跳到下标:i + 1 满足:i + 1 < arr.lengthi - 1 满足:i - 1 >= 0j 满足:arr[i] == arr[j] 且 i != j请你返回到达数组最后一个元素的下标处所需的最少操作次数 。SolutionsBFS搜索解法...

2020-03-10 16:35:38 229

原创 LeetCode颜色分类

题目 颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。来源:力扣(LeetCode)思想利用快速排序的一次划分思想,第一次划分将值为0的元素放在非0元素之前,并且返回分界下标。将分界...

2020-03-08 11:36:58 157

原创 字典树求最长公共前缀

class Trie {public: struct TrNode{ char ch; bool isEnd;//是否是单词的最后一个字母 unordered_map<char,TrNode*> child;//孩子结点 使用浅拷贝 TrNode(){ ch='#'; ...

2020-03-02 17:52:54 624

原创 KMP算法详解

一、 KMP算法解决什么问题?KMP解决的是用线性复杂度在主串中查找第一次出现模式串的下标。如果使用普通方法,那就是用二重循环搜索,时间复杂度为 O(M*N)。M为主串长度,N为模式串长度。【举例子】 比如我们可以用 O(N) 的时间复杂度在主串abcdef@abga##@cd中查找模式串 abga。二、理解KMP算需要理解哪些部分?前缀、后缀概念next[N]next[N]next...

2020-02-26 17:58:46 336

原创 LRU缓存机制

题目来源:力扣(LeetCode)链接:LRU缓存机制最近最久未使用算法在操作系统的虚拟内存中,提供了比实际内存空间大的虚拟存储。而这一技术是通过请求页表(段表)机制、地址变换机构、置换算法以及其他硬件和软件基础实现的。这一功能可以实现进程的非连续存储,即分配给一个进程的空间可以不是连续的,这就使得当系统只需要执行这一进程中的某一模块的指令时,可以暂时将这一模块加载进内存中,从而提供了运...

2020-02-12 21:27:38 285

原创 分隔链表

题目给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5来源:力扣(LeetCode)链接:分隔链表代码NOTES...

2020-02-07 15:00:17 115

原创 TCP协议知识点【更新中】

可靠传输1. 自动重传请求ARQ(Automatic Repeat reQuest):当接收端未收到或者收到出现差错的分组时,无需接收端请求发送方传输,而是接受方自动传输。细节要点:编号 分组、确认分组要编号缓存 暂存分组预重传 收到确认清分组缓存超时计时器 未收到确认就重传 重传时间大于平均往返时间(TTL)操作:收到确认后再转发下一个分组场景 :确认丢失 确认迟到...

2020-02-07 14:33:51 138

原创 反转链表 II

题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem...

2020-02-05 15:21:38 119

原创 有序数组的单一元素

题目来源:力扣(LeetCode)链接:有序数组的单一元素分析为了分析方便,始终控制折半查找的子区间长度为奇数。设子区间为[left,right]mid=left+(right-left)/2mid将子区间分为两个区间有如下几种情况:因为重复出现的元素两两配对,若[left,mid-1]区间长度为偶数若nums[mid] ==numd[mid-1],则说明单一元素下标一定在[...

2020-02-03 20:43:13 288

原创 分糖果

题目来源:力扣(LeetCode)链接:分糖果解法一时间复杂度O(nlogn)空间复杂度O(1)int cmp(const void*a,const void *b){ int *aa=(int*)a; int *bb=(int*)b; return *aa-*bb;}int distributeCandies(int* candies, int candi...

2020-02-03 18:57:52 142

原创 加油站

题目解法一使用二重循环, 从0到gasSize枚举i,从第i个加油站出发枚举,若可以到达下一个加油站,令j=i+1,记下每到下一个站剩下的油量,若油量小于0.,则无法绕环路一周,退出该层循环,否则开往下一个加油站。循环至j==i。时间复杂度为O(n2)代码int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSi...

2020-02-03 18:09:44 220

原创 格雷码

题目来源:力扣(LeetCode)链接:格雷码代码class Solution {public: /* dp[i-1][j] 0<=j<N/2 dp[i][j]= dp[i-1][N-j-1]+1<<(i-1) N/2<=j<N */ vector<in...

2020-02-02 15:32:36 391

原创 矩阵置零

题目来源:力扣(LeetCode)链接:矩阵置零代码空间复杂度为o(m+n)class Solution {public: void setZeroes(vector<vector<int>>& matrix) { set<int> rows;//保存含0的行下标 set<int> colu...

2020-02-01 17:42:10 140

原创 爬楼梯

题目来源:力扣(LeetCode)链接:爬楼梯思路一 暴力搜索暴力搜索,题目可以转换为整数n可以拆成a个1和b个2相加 这种拆法有多少种 ,且4=1+2+14=1+2+14=1+2+1和4=2+1+14=2+1+14=2+1+1是不同的拆法。由于每踏一步有两种选法,至少需要筛选n次,所以时间复杂度约为o(2n)但这种做法会超时。代码void dfs(int sum,int n,int...

2020-02-01 16:54:44 306

原创 旋转图像

题目分析由于要进行原地旋转,直接交换matrix[row][col]和matrix[col][matrixSize-1-row]是行不通的(演算一下)。由于顺时针旋转90度的结果是逆时针旋转90度结果在进行中心对换的结果,所以可以先对矩阵进行转置,再对每行reverse()就可得出结果。代码void swap(int * a,int * b){ int tmp=*a; *...

2020-02-01 13:59:51 146

原创 图解接雨水Trapping Rain Water

题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:接...

2020-01-30 19:14:09 163

原创 有效的数独

有效的数独判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,"....

2020-01-30 17:46:27 398

原创 FourSum

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[...

2020-01-23 19:03:36 175

原创 LeetCode 三数之和

class Solution {public: //双指针法 vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; if(nums.size()<3) return res; ...

2020-01-22 14:56:59 144

原创 LeetCode两数之和(c++)

题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(Le...

2020-01-20 15:02:14 384

原创 字典序全排列

题目给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii分析在用几个数字进行排列组合时,可以按照数字的大小顺序进行排列。如利用1 2 2 3 4进行排列组...

2020-01-13 21:46:41 431

原创 三种解法解含重复数字的全排列

LeetCode 47 全排列II给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii解法一每次让一个数字做为首数字,剩下的递归排列。通过swap来改变首数...

2020-01-12 19:59:11 5047 2

原创 王道数据结构--树的一些典型算法【更新中】

求深度void BiTDepthNonCur(BiTNode * T,int &depth) { if (!T) { depth = 0; return; } cout << "test1" << endl; queue<BiTree> q; BiTNode* p = T; q.push(T); int len=0; whi...

2019-09-13 22:40:56 721

原创 PAT刷题--最短路径之迪杰斯特拉算法-PAT1003 Emergency

分析迪杰斯特拉算法只能解决的是边权为非负情况下的最短路径问题。这一题在经典的最短路算法中增加了最短路径条数的记录以及最短路径最大点权之和的记录。先说迪杰斯特拉算法主要就是两个集合S和U的问题。S是包含了当前已经找到了最短路径的结点而U是还未被加入到S集合中的结点。我们需要循环n次以保证每个结点都加入到了S集合中,然后在每次大循环中,对U集合进行遍历找到离起点最近的结点(用vis数组标...

2019-06-06 10:34:00 435

原创 1076 Forwards on Weibo

[题目链接]https://pintia.cn/problem-sets/994805342720868352/problems/994805392092020736分析这一道题是典型的BFS题目注意从第二行开始输入的是 用户i的关注的人数 以及关注的用户的编号而这道题统计的是某一个用户发一个帖子,在他的粉丝都会转发且只转发一次的条件下,转发层数不超过L的转发总数。所以建图的时候,j建...

2019-05-25 22:48:09 89

原创 (邻接矩阵DFS实现)1034 Head of a Gang (30 分)

1034 Head of a Gang (30 分)One way that the police finds the head of a gang is to check people’s phone calls. If there is a phone call between A and B, we say that A and B is related. The weight of a ...

2019-05-16 12:34:26 401

原创 PAT甲级1002

需要注意的点!许久未写代码,调试这样一个程序都用了很久。(我好菜~~~~(>_<)~~~~)关键的问题还是题目未梳理清楚。输入输出的都是非零项,所以系数肯定大于0,当相加后系数为0就不能输出并计数了。第一个输出数字是非零项的数目以及题目说明需要保留小数后一位,所以对格式的输出也不能马虎!–这是格式输出的部分。再有就是编程技巧的问题,使用map进行遍历输出的时候,因为map底层是...

2019-05-02 11:21:34 330

原创 2019 蓝桥杯省赛 A 组模拟赛(四)代码填空--非周期串

由A和B组成的串中,可以由多个(超过一个)相同的串首尾拼接后得到的串,称为周期串,现在请问有多少个长为n 的非周期串?因为答案可能会很大,所以请输出对2019 取模的结果。例如: “AAAA” 是周期串,因为它可以由两个 “AA” 拼接而成或者由四个 “A” 拼接而成。“AABBAABB” 是周期串,因为它可以由两个 “AABB” 拼接而成。“ABA” 和 “AABBAA” 则都是非周期串。...

2019-03-10 20:41:54 216 2

原创 2019 蓝桥杯省赛 A 组模拟赛(四)任务序列

蒜头君最近开始玩一款单机类游戏,这个游戏很有意思,所有任务的接受是没有限制的,所以他一次性把所有可以接的任务都接下了,但是这时候他发现了一个很严肃的问题,他总共接受了 n 个任务,每个任务有剩余完成时间和这个任务的金钱奖励。现在为了方便,蒜头君假设现在时间为 ,他知道了每个任务的剩余完成时间和完成金钱,并且完成一个任务的时间都是1 。希望你可以告诉他该怎么完成任务才能尽量获得更多的钱。输入格式...

2019-03-10 20:28:12 328

原创 计蒜客 蒜头君的最大子阵列

题目描述蒜头君拿到了一个矩阵,他想知道其中的最大非空子矩阵和是多少。输入格式第一行输入两个整数 n,m代表这个矩阵的行数和列数。接下来n行,每行m个整数 ai1,ai2,ai3⋯aima_{i1}, a_{i2}, a_{i3}⋯ a_{im}ai1​,ai2​,ai3​⋯aim​。(1≤m,n≤400,−109≤aij≤1091 ≤ m, n ≤ 400, −10 ^{9}≤ aij ≤...

2019-02-21 21:19:26 721

原创 Java解 PATA1020 Tree Traversals

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;public class Main{ static int n; static int [] pos...

2019-02-12 22:09:55 216 1

原创 PAT A 1053 Path of Equal Weight

题目链接 https://pintia.cn/problem-sets/994805342720868352/problems/994805424153280512思路这一题因为节点数较小,所以使用静态法构造树的结构。对每一个结点有w权值属性以及孩子结点的编号。所以构造一个结点结构Nodestatic class Node { int w; List&lt;Integer&gt...

2019-02-12 21:29:19 206

原创 牛客寒假算法基础集训营4 C题 Applese走迷宫

时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld精通程序设计的 Applese 双写了一个游戏。在这个游戏中,它被困在了一个n×m的迷宫中,它想要逃出这个迷宫。在迷宫中,有一些方格是水池,只有当 Applese 处于水属性的时候才可以通过;有一些方格是岩浆,只有当 Applese 是火属性的时...

2019-02-10 21:03:31 306

原创 2019计蒜客蓝桥杯A组模拟赛题解(Java)

填空题求阶乘位数这道题暴力…解决不了,可以使用通过对n!取10的对数来取n!的位数,判断对数的位数是否大于等于10000,如果是输出答案。公式log10(n!)=log10(1∗2∗3∗4...∗n)=log10(1)+log10(2)+...+log10(n−1)+log10(n)log10(n!)=log10(1*2*3*4...*n)=log10(1)+log10(2)+......

2019-02-09 09:09:47 820

原创 计蒜客bfs密码锁

密码锁现在一个紧急的任务是打开一个密码锁。密码由四位数字组成,每个数字从 到 进行编号。每次可以对任何一位数字加 或减 。当将 9 加 时,数字将变为 1 ,当 1 减 的时,数字将变为 9 。你也可以交换相邻数字,每一个行动记做一步。现在你的任务是使用最小的步骤来打开锁。注意:最左边的数字不与最右边的数字相邻。输入格式第一行输入四位数字,表示密码锁的初始状态。第二行输入四位数字,表...

2019-02-08 17:43:04 1632

空空如也

空空如也

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

TA关注的人

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