摘要: 把一个数组分成m个连续子数组(不能有空数组),求所有分法中,子数组sum的最大值的最小值。 方法1:容易想到的是动态规划 dp[i][j] = min(max(dp[k-1][j-1], sum[k][i]) 1 <= k <= i, dp[i][j]表示用前i个数字,分成j组,最大和的最小值 ti 阅读全文
posted @ 2020-03-20 10:19 betaa 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 分析:求一个区间最邻近的右边的区间在数组中的索引位置,右侧区间头要大于等于左侧区间尾。用map存区间头对应的区间索引。 标准库有map自己的lower_bound函数,返回大于等于key的第一个值的iteraotr。找右侧最邻近区间就是找 lower_bound(intervals[i][1]) . 阅读全文
posted @ 2020-03-20 10:09 betaa 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 分析:暴力枚举复杂度为$O(n^4)$,不可行。将A,B能组成的和用map计数,查找 -C[i]-D[j] 在map中是否存在 time $O(n^2)$ space $O(n^2)$ class Solution { public: int fourSumCount(vector<int>& A, 阅读全文
posted @ 2020-03-20 09:59 betaa 阅读(75) 评论(0) 推荐(0) 编辑
摘要: C++中,每一个表达式(一个操作符和它的操作数,一个字面值,一个变量名等等)都有两个独立属性: 类型(type) :除去引用特性,用于类型检查 值类型(value category):用于语法检查,比如一个表达式的结果能否被赋值。值类型有三种: lvalue 左值 prvalue 纯右值,纯粹的右值 阅读全文
posted @ 2020-03-17 19:46 betaa 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 快速幂,二进制取幂(Binary Exponentiation,也称平方法),是在一个$O(\lg n)$的时间内计算$a^n$的小技巧,而暴力计算需要$O(n)$的时间。 详细解释 LC50. Pow(x, n) 实现乘方函数,底数为double,指数为32-bit signed integer 阅读全文
posted @ 2020-03-17 07:48 betaa 阅读(136) 评论(0) 推荐(0) 编辑
摘要: memcpy void* my_memcpy(void *dest, void *src, int n) { if (dest == NULL || src == NULL || n <= 0) return NULL; char* pdest = (char*) dest; char* psrc 阅读全文
posted @ 2020-03-16 00:18 betaa 阅读(164) 评论(0) 推荐(0) 编辑
摘要: LC116.Populating Next Right Pointers in Each Node 给一个完美二叉树的节点添加一个指向右边下一个节点的指针 方法1:(递归)二叉树前序遍历,当前遍历到的点,如果左孩子存在,左孩子的 next 指向右孩子,此外,如果当前节点 next != NULL , 阅读全文
posted @ 2020-03-11 18:28 betaa 阅读(132) 评论(0) 推荐(0) 编辑
摘要: LC109. Convert Sorted List to Binary Search Tree 将有序链表转化成高度平衡的BST 总体思路:将中间节点作为二叉树的根节点,递归左子树和右子树 方法1:将链表值存入数组 time:$O(n)$ time:$O(n)$ class Solution { 阅读全文
posted @ 2020-03-10 15:46 betaa 阅读(92) 评论(0) 推荐(0) 编辑
摘要: LC98. Validate Binary Search Tree 给定一个二叉树,判断它是否为二叉搜索树 方法一:BST的中序遍历结果是一个严格递增的序列,因此中序遍历的时候保存上一个遍历到的节点,当前节点的值必须大于上一个节点的值 class Solution { public: bool is 阅读全文
posted @ 2020-03-10 09:16 betaa 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 给一串数字,在数字之间添加二元运算符 + - * ,使表达式的运算结果为 target ,输出所有可能的添加方式。 DFS:设共有 n 个数字,共有 n-1 个中间位置需要插入符号,插入的符号为: ''(0) '+'(1) '-'(2) '*'(3) 插入''(0)表示不插入数字,即相邻的数字组成更 阅读全文
posted @ 2020-03-09 15:46 betaa 阅读(110) 评论(0) 推荐(0) 编辑