Skip to content

Latest commit

 

History

History
196 lines (119 loc) · 5.08 KB

README.md

File metadata and controls

196 lines (119 loc) · 5.08 KB

myLeetCode

Some basic info

For lack of Data Structure knowledge, from now on I will focus on the questions of easy level. The hard and medium ones will be continued after maybe my senior 3. Practice makes perfection! Have fun.

The structure

在 zilaio 文件夹存储了一些必要的资料; main.cpp 和 main,还有 build 文件夹是用来本地 CMake 来 debug 的(test.in 用作测试的输入文件) 剩下的文件就是我的题解。

Solution reviews

1

2020/09/13 Pass all the testcases

2

2020/09/13 失败

2020/12/21 成功 pass,但是内存和 runtime 还不是很满意。 第二次修改,这次的 runtime 击败了 65.69%的用户,但是内存还是 70+M,不是很满意,但是目前这个程度应该是足够了。结束战斗。

3

2020/09/14 我的方法有问题 因此我把它放在后缀叫 wrong 的文件里 用来提交的那个是学习别人的答案 这个 unodered set 很妙 叫做哈希集合 刚好满足这里的情形

7

2020/09/18 整数翻转 2020/12/17 finish, pass

455

2020/12/27 贪心算法,greedy algorithm 看了算法导论,学会了点皮毛,打算这几天以这个为主题展开学习,然后结合着递归和数据结构刷

746

2020/12/22

这道题是 recursion+动态规划 DP,学习了一下 DP 的知识和概念,ziliao 文件夹里有一个课件资料。 一开始的 runtime 超出范围了,最后用备忘录 memo[]解决了问题,减小了复杂度。 目前的 runtime 和 memory 都不是很理想,有待改进。

Version_2 现在我用了 DP table 的方法做,runtime 明显优化了,但是内存还是有点大。这个题解现在存在后缀为“_2”的文件里,之前的递归+memo 的方法存放在“_1”的文件里。

56

2021/05/09

运用了快速排序算法先将 intervals 按照第一个数字升序排列

然后运用遍历的方法逐个处理重复的 interval

已过 test

168

2021/07/03

我的算法太占内存了 orz,抄了网上的答案 数学题还是数学公式写清楚再码代码,否则很容易就把演算过程一并写入代码了。。。

110

2021/07/17

没啥问题,很正常的一道递归,和官方答案一致,pass

133

2021/07/20

使用 hash table 来存储已经访问过的结点,然后对 neighbors 进行 DFS 递归遍历即可 tip:STL 里,hash 是 unordered_map

997

2021/07/22

图,邻接表的寻找操作,基本上是数组题

  • find_if(beg, end, [](para x){return ...}) -> 寻找 vector 里符合相关条件的元素
  • find() -> 寻找 vector 里某个元素,如果不存在则最终位于尾后迭代器 end (find_if同理)
  • 从 itr 到 index 直接做 (itr-vec.begin()) 即可

1137 & 509

2021/08/11

DP 常规操作,pass

198

2021/8/13

DP 解题四步骤:

  • 定义子问题
  • 写出子问题的递推关系
  • 确定 DP 数组的计算顺序
  • 空间优化(可选)

213

2021/8/13

成环的意思就是要么取头不取尾,要么取尾不取头 所以就 0sz-2 做一次,1sz-1 做一次,取较大的即可

740

2021/8/13

把每个数字出现的次数*数字本身 -> 存在一个哈希数组里 这道题目就转变为打家劫舍了 有、巧妙,值得回味

55

2021/8/13

这题用贪心最方便,动归那个方法 worst 是 O(n 方),具体代码在-dp 里 贪心的话肯定是 O(n),状态量设置成最远距离,线性更新到最后。具体代码在-greedy 里

45

2021/8/14

这是一道好题 贪心,多维护一个状态量叫做边界 end,用来记录下一次 jump 更新的边界 这道题的核心有 2 个点:

  • 在一个 end 之内,所有的结点最小跳跃次数相同
  • jump 序列和 i 序列错位了一个结点(i 落后 jump 一个点位)=> 所以最后只做到 sz-1 即可!

53

2021/8/14

贪心,维护两个状态 res 和 sum sum 记录临时的子序列之和,res 维护最后的最大子序列之和 最后返回 res 即可

918

2021/8/14

53 的变形,主要思想就是转化成类似 53 的做法,然后复用 53 的代码 分成两个子问题:

  • 最大子序列之和 sup
  • 最小子序列之和 inf 我们要求的即是 max(sup,sum-inf)

但是当 sup<0 的时候,说明 nums 里全是负数(否则但凡有一个非负数就 sup 等于那个数,从而非负) 所以直接返回 sup 即可(因为 sum-inf=0,但是这种情况下子序列为空,不符合要求)

1567

2021/8/16

这是一道好题 保存两个状态

  • pos 表示的是循环进行到现在为止、最长的乘积为【正】的子序列
  • neg 表示的是循环进行到现在为止、最长的乘积为【负】的子序列

所以每次循环结束的时候,取 res 和 pos 中较大的。做到最后就是答案。

152

2021/8/16

这是一道好题 和 1567 思路有一些相似,保存两个最值,一个正数 maxF 最大,一个负数 minF 最小 目的在于当循环碰到负数的时候直接交换二者的绝对值即可

69

2021/09/29

过了,477lab2 interview problem 1 的变体 整体思路是二分法搜索最接近的数