随笔分类 -  微软面试

微软面试手撕算法题
摘要:解决 TOP k 问题通常可采用 堆排序 和 快速排序的思想 1. 大根堆(前 K 小) / 小根堆(前 K 大): 时间复杂度O(NlogK) c++ STL 中提供了 priority_queue 实现堆的基本功能,比如 priority_queue <int> pq; 堆 pq 的元素都是 i 阅读全文
posted @ 2021-05-11 16:27 谁在写西加加 阅读(359) 评论(0) 推荐(0)
摘要:本文参考 Leetcode 547. 省份数量 题解区:https://leetcode-cn.com/problems/number-of-provinces/solution/python-duo-tu-xiang-jie-bing-cha-ji-by-m-vjdr/ 一 . 并查集 基本概念 阅读全文
posted @ 2021-05-01 12:41 谁在写西加加 阅读(133) 评论(0) 推荐(0)
摘要:方法一: 单调栈(单调递增栈) 1. 对给定数组 A[ ] 中的每个元素 A[i] ,如果能 求出包含 arr [ i ] 并以 A[i] 为最小元素的所有子数组个数n[i], 则元素 A[i] 对答案 ans 的贡献为n[i]* A[i] 。 2. 那么我们可以先求包含 A[i] 并以A[i]为最 阅读全文
posted @ 2021-04-25 21:27 谁在写西加加 阅读(85) 评论(0) 推荐(0)
摘要:方法一 中心扩散法 解析: 回文串一定是 中心对称的,回文串的对称中心可能是 1 个字符,也可能是 2个字符,遍历 s 中的 字符 分别以 s[i] 和s[i] 、s[i+1] 为中心像两边扩散,记录 最长 回文串的 起始位置 和长度。 时间 O(n ^ 2) 空间 O(1) 代码: 1 //方法一 阅读全文
posted @ 2021-04-22 10:28 谁在写西加加 阅读(95) 评论(0) 推荐(0)
摘要:解析: ,以上图的示例1为例,三角形 有 4 行。行号 0,1,2,3 ;最后一行每个数(4,1,8,3) 到三角形底部的路径就是其自身的值。 1. 定义状态 dp[i][j] 表示 元素 triangle[i][j] 到三角形底部的路径。 2. 状态转移方程 :dp[i][j] = min(dp[ 阅读全文
posted @ 2021-04-21 19:34 谁在写西加加 阅读(112) 评论(0) 推荐(0)
摘要:解析:使用 单调栈 + 哨兵的思想 解决,具体思路可参考 liweiwei 题解:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/solution/bao-li-jie-fa-zhan-by-liweiwei1419/ 阅读全文
posted @ 2021-04-20 21:45 谁在写西加加 阅读(102) 评论(0) 推荐(0)
摘要:关于排序算法的考察,需重点掌握 快速排序 、归并排序 、 堆排序 。 1. 快速排序 1.1 快速排序算法的思想与实现 快速排序的重点是要掌握其划分的思想,划分算法需要先挑选一个 元素作为 pivot。在划分执行完之后, pivot左边的元素都小于等于它,右边的元素都大于等于它,pivot 的位置就 阅读全文
posted @ 2021-04-18 22:11 谁在写西加加 阅读(225) 评论(0) 推荐(0)
摘要:题目描述: 某种二叉树的节点包含指向 左子树、右子树、父节点的 3 个指针,给定该二叉树中的某个节点 , 返回它的中序遍历的下一个节点的指针。 分析: 节点(设为x) 中序遍历的下一个节点有以下可能: 1. 若x有右子树。则x的下一个节点为x右子树最左侧节点。如,2的下一个节点为8。 2. 若x没有 阅读全文
posted @ 2021-04-16 11:46 谁在写西加加 阅读(78) 评论(0) 推荐(0)
摘要:具体可参考 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 阅读全文
posted @ 2021-04-12 20:16 谁在写西加加 阅读(59) 评论(0) 推荐(0)
摘要:解析:参考 LeetCode 评论区 liweiwei1419 大神的题解 https://leetcode-cn.com/problems/maximum-product-subarray/solution/dong-tai-gui-hua-li-jie-wu-hou-xiao-xing-by-l 阅读全文
posted @ 2021-04-12 12:41 谁在写西加加 阅读(101) 评论(0) 推荐(0)
摘要:题目描述: 解析: 参考 VV大神 的题解: https://leetcode-cn.com/problems/longest-increasing-subsequence/solution/dong-tai-gui-hua-er-fen-cha-zhao-tan-xin-suan-fa-p/ 方法 阅读全文
posted @ 2021-04-10 20:54 谁在写西加加 阅读(90) 评论(0) 推荐(0)
摘要:题目描述: 思路: 对上图示例 2,设置两个指针 A_ptr 和 B_ptr ,让A_ptr 初始 指向链表headA头部 (结点 0), B_ptr初始指向链表headB头部(结点3), A_ptr 和 B_ptr同步地向后移动,A_ptr 到结点 0 所在链表尾部后,跳到headB头部(结点 3 阅读全文
posted @ 2021-04-07 14:09 谁在写西加加 阅读(51) 评论(0) 推荐(0)
摘要:题目描述: 代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 class Solution { 4 public: 5 bool exist(vector<vector<char>>& board, string word) 6 { 7 阅读全文
posted @ 2021-04-06 21:25 谁在写西加加 阅读(66) 评论(0) 推荐(0)
摘要:题目描述: 解析: 此类题目 回溯法 相关的题型:排列、组合、子集相关问题 回溯相关问题 可参考 : https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by- 阅读全文
posted @ 2021-04-06 18:55 谁在写西加加 阅读(81) 评论(0) 推荐(0)
摘要:题目描述: 思路: 1. 先把整个字符串翻转; 2. 然后再将字符串中的每个单词往前移同时对每个单词再做翻转,每个单词之间留出一个空格。 3. 在步骤 2 完成之后,原字符串中多余的空格会全部在字符串尾部,再将字符串尾部多余的空格 全部删除即可; 代码: 1 #include <bits/stdc+ 阅读全文
posted @ 2021-04-06 17:13 谁在写西加加 阅读(67) 评论(0) 推荐(0)
摘要:题目描述: 思路: 对两个数字字符串从字符串的最后一位(数字的最低位)相加,统计进位情况,具体实现如下所示: 代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 class Solution { 5 public: 6 string a 阅读全文
posted @ 2021-04-02 15:22 谁在写西加加 阅读(64) 评论(0) 推荐(0)
摘要:题目描述: 代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 class Solution { 4 public: 5 bool isBalanced(TreeNode* root) 6 { 7 int h = 0; 8 return i 阅读全文
posted @ 2021-04-02 10:32 谁在写西加加 阅读(41) 评论(0) 推荐(0)
摘要:题目描述: 代码: 1 class Solution { 2 public: 3 bool isValidSudoku(vector<vector<char>>& board) 4 { 5 unordered_map<int,unordered_set<char>> r_memo;//某行的所有元素 阅读全文
posted @ 2021-04-01 18:54 谁在写西加加 阅读(79) 评论(0) 推荐(0)
摘要:题目描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 1. 每行的元素从左到右升序排列。2. 每列的元素从上到下升序排列 思路: 根据 搜索的矩阵 matrix 特性,可以将 target 和矩阵的右上角元素 比较。 1. 要是相 阅读全文
posted @ 2021-04-01 15:04 谁在写西加加 阅读(72) 评论(0) 推荐(0)
摘要:题目描述: 求一个整数 x 的平方根,返回整数,结果是小数 ,就向下取整。 思路: x的平方根 一定在 [1,x ] 区间内,使用二分查找,在 O(log x) 时间就可找到。 代码如下所示。 1 class Solution { 2 public: 3 //二分法 Time O(log x) 空间 阅读全文
posted @ 2021-04-01 13:03 谁在写西加加 阅读(55) 评论(0) 推荐(0)