随笔分类 -  LeetCode

一天变强一点
摘要:1、最小高度二叉搜索树(面试题 04.02) 首先确定递归 DFS 递归出口:l > r 创建根节点 1 填值,注意mid = (r - l)/2 + l 2 创建左子树和右子树 DFS(nums, l, mid-1)和DFS(nums, mid+1, r) class Solution { pub 阅读全文
posted @ 2021-01-24 21:38 Gumpest 阅读(41) 评论(0) 推荐(0)
摘要:1、移除链表元素(203) 移除时是需要三个节点协同,但当头节点需要删除时,难以统一;因此需要在头节点前面设置哑节点,从而保持一致。 依旧使用双指针 cur和 pre 分别是dump和head; 如果相同 cur->next = pre-next; pre = pre->next; 否则 cur = 阅读全文
posted @ 2020-08-26 16:27 Gumpest 阅读(48) 评论(0) 推荐(0)
摘要:关键:动态规划(不是很懂 状态转移方程) 求解以nums[i]为右区间时,和的最大值 若前nums[i-1]的最大和为负,则没必要加上,自己就是最大和 否则,可以加上 此时这个数组里是nums[i]为右区间的,各个最大和 求此数组的最大值即可 1 class Solution { 2 public: 阅读全文
posted @ 2020-07-07 16:54 Gumpest 阅读(61) 评论(0) 推荐(0)
摘要:递归思想 sum的值往下累减 左子树或右子树的值符合即可 注意root为空的情况 当来到叶子节点时(左右子树为空),判断它的值是否等于sum 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 阅读全文
posted @ 2020-07-07 15:44 Gumpest 阅读(52) 评论(0) 推荐(0)
摘要:查找N内的质数个数 关键:厄拉多塞筛法(质数的倍数肯定不是质数,剩下的都是质数) vector<bool>prime (n,true); 1 class Solution { 2 public: 3 int countPrimes(int n) { 4 int res = 0; 5 vector<b 阅读全文
posted @ 2020-07-05 18:01 Gumpest 阅读(75) 评论(0) 推荐(0)
摘要:关键:快慢指针思想 非快乐数的条件 打破循环 若是 1 ,快指针会在1处循环,等慢指针追上; 若不是 1 ,慢指针会在一个周期后追上快指针。 1 class Solution { 2 public: 3 int bitSquareSum(int n){ 4 int sum = 0; 5 while( 阅读全文
posted @ 2020-07-05 16:08 Gumpest 阅读(80) 评论(0) 推荐(0)
摘要:关键:Hash unordered_map<int, int> ::iterator it = h.begin();//迭代器 哈希表的遍历 次数为Value,值为key 复杂度为O(n) 1 class Solution { 2 public: 3 int singleNumber(vector< 阅读全文
posted @ 2020-07-05 15:04 Gumpest 阅读(62) 评论(0) 推荐(0)
摘要:关键:Hash unordered_map<int, int> map; map.count(key) 判断key对应value的个数 map[key] = value 插入{key,value} 复杂度为O(n) 1 class Solution { 2 public: 3 vector<int> 阅读全文
posted @ 2020-06-08 21:05 Gumpest 阅读(73) 评论(0) 推荐(0)