随笔分类 - 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
阅读全文
摘要:1、移除链表元素(203) 移除时是需要三个节点协同,但当头节点需要删除时,难以统一;因此需要在头节点前面设置哑节点,从而保持一致。 依旧使用双指针 cur和 pre 分别是dump和head; 如果相同 cur->next = pre-next; pre = pre->next; 否则 cur =
阅读全文
摘要:关键:动态规划(不是很懂 状态转移方程) 求解以nums[i]为右区间时,和的最大值 若前nums[i-1]的最大和为负,则没必要加上,自己就是最大和 否则,可以加上 此时这个数组里是nums[i]为右区间的,各个最大和 求此数组的最大值即可 1 class Solution { 2 public:
阅读全文
摘要:递归思想 sum的值往下累减 左子树或右子树的值符合即可 注意root为空的情况 当来到叶子节点时(左右子树为空),判断它的值是否等于sum 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val;
阅读全文
摘要:查找N内的质数个数 关键:厄拉多塞筛法(质数的倍数肯定不是质数,剩下的都是质数) vector<bool>prime (n,true); 1 class Solution { 2 public: 3 int countPrimes(int n) { 4 int res = 0; 5 vector<b
阅读全文
摘要:关键:快慢指针思想 非快乐数的条件 打破循环 若是 1 ,快指针会在1处循环,等慢指针追上; 若不是 1 ,慢指针会在一个周期后追上快指针。 1 class Solution { 2 public: 3 int bitSquareSum(int n){ 4 int sum = 0; 5 while(
阅读全文
摘要:关键:Hash unordered_map<int, int> ::iterator it = h.begin();//迭代器 哈希表的遍历 次数为Value,值为key 复杂度为O(n) 1 class Solution { 2 public: 3 int singleNumber(vector<
阅读全文
摘要:关键: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>
阅读全文

浙公网安备 33010602011771号