摘要:
解决 TOP k 问题通常可采用 堆排序 和 快速排序的思想 1. 大根堆(前 K 小) / 小根堆(前 K 大): 时间复杂度O(NlogK) c++ STL 中提供了 priority_queue 实现堆的基本功能,比如 priority_queue <int> pq; 堆 pq 的元素都是 i 阅读全文
摘要:
本文参考 Leetcode 547. 省份数量 题解区:https://leetcode-cn.com/problems/number-of-provinces/solution/python-duo-tu-xiang-jie-bing-cha-ji-by-m-vjdr/ 一 . 并查集 基本概念 阅读全文
摘要:
方法一: 单调栈(单调递增栈) 1. 对给定数组 A[ ] 中的每个元素 A[i] ,如果能 求出包含 arr [ i ] 并以 A[i] 为最小元素的所有子数组个数n[i], 则元素 A[i] 对答案 ans 的贡献为n[i]* A[i] 。 2. 那么我们可以先求包含 A[i] 并以A[i]为最 阅读全文
摘要:
方法一 中心扩散法 解析: 回文串一定是 中心对称的,回文串的对称中心可能是 1 个字符,也可能是 2个字符,遍历 s 中的 字符 分别以 s[i] 和s[i] 、s[i+1] 为中心像两边扩散,记录 最长 回文串的 起始位置 和长度。 时间 O(n ^ 2) 空间 O(1) 代码: 1 //方法一 阅读全文
摘要:
解析: ,以上图的示例1为例,三角形 有 4 行。行号 0,1,2,3 ;最后一行每个数(4,1,8,3) 到三角形底部的路径就是其自身的值。 1. 定义状态 dp[i][j] 表示 元素 triangle[i][j] 到三角形底部的路径。 2. 状态转移方程 :dp[i][j] = min(dp[ 阅读全文
摘要:
一 什么是rpc框架? 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 1.1 那什么是远程调用? 通常我们调用一个 c/c++ 中的函数,比如: localAdd(10, 20),localAdd方法的具体实现要么是用户 阅读全文
摘要:
解析:使用 单调栈 + 哨兵的思想 解决,具体思路可参考 liweiwei 题解:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/solution/bao-li-jie-fa-zhan-by-liweiwei1419/ 阅读全文
摘要:
关于排序算法的考察,需重点掌握 快速排序 、归并排序 、 堆排序 。 1. 快速排序 1.1 快速排序算法的思想与实现 快速排序的重点是要掌握其划分的思想,划分算法需要先挑选一个 元素作为 pivot。在划分执行完之后, pivot左边的元素都小于等于它,右边的元素都大于等于它,pivot 的位置就 阅读全文
摘要:
题目描述: 某种二叉树的节点包含指向 左子树、右子树、父节点的 3 个指针,给定该二叉树中的某个节点 , 返回它的中序遍历的下一个节点的指针。 分析: 节点(设为x) 中序遍历的下一个节点有以下可能: 1. 若x有右子树。则x的下一个节点为x右子树最左侧节点。如,2的下一个节点为8。 2. 若x没有 阅读全文
摘要:
具体可参考 https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/solution/bao-li-jie-fa-fen-zhi-si-xiang-shu-zhuang-shu-zu-b/ 代码如下: 1 class Solut 阅读全文