随笔分类 - Algorithm
摘要:最近自己在电话面试中,经常被问到,“找出数组中的第k个最大的数”或者“或者找出数组中的前k个最大的数”,都是找出特定的数。首先,可以简单的用快排然后,第k位就是的,但是这样时间复杂度会很高。 一、快速选择算法 这个名字是y总起的,原理很简单。快排是找一个标志位,小于它的放左边,大于它的放右边,这样是
阅读全文
摘要:阿里云实习一面算法题记录 答题平台(面试平台)是阿里的伯乐,没有代码提示,但貌似也不需要你运行代码。 也聊到云原生部门基本上是go多,java主要用来和数据库交互,操作系统一部分也用到c/c++。 首先我貌似记得这是个力扣原题,但是刚开始还是忘了啥叫回文子串,时间复杂度是O(N2)的.开始写时空间复
阅读全文
摘要:原题是lc31题力扣中等难度,当时写的时候空间复杂度没处理好,用的是cpp的sort函数,应该用reverse的 面试官评价,勉强通过,感觉非常的不情愿,个人觉得主要是面试环境有点小紧张,否则可以处理好一些细节问题 class Solution { public: void nextPermutat
阅读全文
摘要:1 两数之和 直接n平方复杂度,双指针减少一层复杂度; 或者可以采用哈希表 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> heap; for(i
阅读全文
摘要:如图所示,假设左边小于右边 通过如下分析,双指针每次只需要移动较小那边即可,因为只有移动较小那边才有比初始的容量大的可能 代码如下: class Solution { public: int maxArea(vector<int>& height) { int i = 0, j = height.s
阅读全文
摘要:Prim算法 算法原理 代码实现 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 510, INF = 0x3f3f3f3f; int n, m; int g
阅读全文
摘要:AcWing: BFS相关 背景知识:有向图 离散数学图论中的概念,由点和边组成图,其中图中所有边都是带有方向的图称为有向图。 在算法题中,我们可以用邻接矩阵和邻接表(推荐)存储有向图。 邻接表即类似于哈希表的拉链法,用链表来解决冲突问题。并且其中的链表顺序并不重要(存储相邻点),对于解决bfs问题
阅读全文
摘要:用数据模拟单链表与双链表 单链表 题目: #include <iostream> using namespace std; const int N = 100010; // head 表示头结点的下标 // e[i] 表示节点i的值 // ne[i] 表示节点i的next指针是多少 // idx 存
阅读全文
摘要:主要利用Trie树的特点存储字符串集合 题目 图解: 题解: #include<iostream> using namespace std; const int N = 100010; int s[N][26], cnt[N], idx; char str[N]; void insert(char
阅读全文
摘要:前缀和 前缀和本身是一种思想,用来解决一个确定区间的和的问题,如[l,r]; 它能将本身o[n]复杂度的情况变成o[1],基本公式如下 //一维前缀和 s[n] = a[1] + a[2] + a[3] + a[4] + ... + a[n] a[l] + a[l + 1] + ... + a[r]
阅读全文

浙公网安备 33010602011771号