leetcode
文章平均质量分 61
sluqy671
人生如梦, 且行且失;及时行乐,岂不快哉?
展开
-
LeetCode1696 Jump Game VI
题意:给出一个大小为n的序列,以标号0作为起点开始跳,每次最多向右移动k个位置,求到达序列最右端时所经过所有点的权值之和最大为多少。首先上经典dp,O(n*k)fu'z原创 2021-06-10 11:48:19 · 176 阅读 · 0 评论 -
LeetCode 25 Reverse Nodes in k-Group
心血来潮参加了一次比赛结果签到之后人没了,继续康复训练吧= =做了一段时间的题,也看了一段时间别人更优的解法,思路很自然的变清晰了。题意:给出一个链表的head和一个数值k,要求将链表里面每k个连续的node进行翻转,函数返回值为新的head。思路:大体框架突出一个递归调用思想,既然每次返回新的head,就没有必要用循环结构来让指针指指指最后还指飞了,特判条件也很多。于是考虑每k个点处理一次,先求next_head = reverseKGroup(now->next, k),再处理好当原创 2021-01-25 10:20:59 · 170 阅读 · 0 评论 -
LeetCode 20 Valid Parentheses 括号匹配
经典的括号匹配判断问题,由于是比较久远的记忆不太记得怎么做了,稍微想了一下然后搓出来的。仅有一种括号的情形比较简单,只要记录一下正反括号的数目从左往右扫一遍,保证中间不出现未匹配的右括号即可。但这种方法对于本题的解法在思路上没有贡献,因为如果使用同样的方法,我们会发现两个子串"(({(()"与"(((({)"在匹配到最末位的时候所记录的状态是相同的,而后者很明显是不满足要求的串。回归本题,一个简单的思路是确认每个括号是否匹配,即对于每个括号求与其相匹配的另一个反括号。根据满足括号匹配的串而言,有着若原创 2021-01-13 15:01:40 · 163 阅读 · 0 评论 -
LeetCode 21 Merge Two Sorted Lists
基本的指针操作实现基本的merge。基础中的基础,但是在代码结构上来说,我们仍应当追求更加优美且有效的写法。以下是按照本人第一时间的正常思路进行编写的代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) :原创 2021-01-05 15:53:04 · 116 阅读 · 0 评论 -
LeetCode 16 3Sum Closest 可用三分法
题意:3Sum题变种,给出n个数nums[]和一个target,求n中的3个数的组合使得其和与target相差值最小。思路:传统的3Sum做法(LeetCode15),枚举三个数中的两个,然后求证剩余的数字是否在给出的集合中。后面一步可以时间换空间,用二分来做,这样复杂度乘上一个logn;也可以空间换时间,用数组直接存储或者hash挂链。对于这一题,可以继续用传统的解法,先枚举三个数中的两个,但注意到目标答案的变化并不是单调的,即取出两个数nums[i]和nums[j]后,最优解的计算过程为ans=原创 2020-12-31 13:22:18 · 148 阅读 · 0 评论 -
LeetCode 1457 Pseudo-Palindromic Paths in a Binary Tree
简单题,可以训练一下优化思想。题意:给出一个二叉树,每个节点的值在1-9之间,若一条从根节点到叶节点的路径(path)包含的值可以在排列变换后形成回文串,则我们称这条路径是Pseudo-Palindromic Path。求PPP的数量。数据范围:1≤n≤1e5很自然的想到自根向下的dfs维护每种数值的数量,只要做到这点已经能ac了。最裸的dfs的话,时空复杂度均为O(n),因为dfs过程中保存了9种value的状态。可以使用01进行优化,即使用数组来记录每个value的状态stat,每次原创 2020-12-30 11:15:25 · 101 阅读 · 0 评论 -
LeetCode 754 Reach a Number
题意:出发点位于数轴上的原点,对于第n步,可选择向左或是向右移动n个单位,求到达target的最小步数。思考:最开始没有什么想法,由于数据区间直接覆盖整个int类型,bfs什么的肯定不可能;尝试贪心,但是没有任何数学依据。易证target具有对称性,因此不考虑起手往反方向跳的情况(贪心的想法),一直向右直到接近target;因为第k步与第k+1步相差1,可以认为对于一段长度为1的路径,有cost(1)=2;那么如果现在距离target为d,答案是否就是2*d呢?很容易想到反例,不原创 2020-12-29 15:57:06 · 87 阅读 · 0 评论 -
LeetCode 12 新的开始
OI生涯早就结束了,ACM也是个虎头蛇尾,现如今还在读研,学习生活没什么问题,眼下就是找工作这一点了。再次开始写博客的契机是csdn给我发的邮件,让我惊讶的是居然还有人在看自己年轻时写过的东西,甚至还有提问。这里不得不对各位可能是初学者或是OI大神或是事业有成的工作者等等,说一声抱歉,因为我自己也看不懂而且不记得了= =。对于找工作,还是决定早做准备,抽空慢慢做题。CF是打不动了,但LeetCode的水平还是蛮低的,可以放心食用,这里就一步一步慢慢刷吧。写点东西,也是学习的一个过程。我也知道网上原创 2020-12-29 14:07:39 · 112 阅读 · 1 评论