
算法题
愚人国度的King
不崇尚速成,脚踏实地,静心做技术,静心学习
展开
-
leetcode笔记
输入处理详细可以看这个网址:https://ac.nowcoder.com/acm/contest/5652输入如下:a,c,bbf,ddddnowcoder输出如下:a,bb,cdddd,fnowcoder#include <bits/stdc++.h>#include <sstream>#include <string>#include <stdio.h>using namespace std;int main(){原创 2021-09-16 18:10:57 · 830 阅读 · 0 评论 -
并查集应用--连通网络的操作次数
1.概念对集合的操作:1.合并集合 2.搜索两元素是否再同一个集合中利用并查集这种数据结构 可以实现上面这两个操作的时间复杂度均为O1经典应用:最小生成树 , 无向连通块的数量。树中的每个节点有两部分组成:数值加父节点。用一个数组表示这个节点,如P[i] = a 这里的i就是数值,a就是父节点。一开始节点的父节点都是指向自己的。路径压缩:使得集合合并的时间复杂度变为O1。就是将所有的父节点反向指向其领导。后续的查询的速度就会变成O1;...原创 2021-04-19 20:38:41 · 184 阅读 · 0 评论 -
前缀树的应用-单词替换
这道题也是一道前缀树类型的题目。先参考这题主要在于如何去利用这个数据结构,这个结构的主要操作是,建树、查找。要处理的地方在于怎么迁移到这道题目上面来。观察题意,我们可以用pass 和end 来辅助处理。如何理解?首先是建树,建树的过程和上一道的前缀树是一样的(当然在处理之前,要思考,是字典作为树,还是句子中的单词作为树),用句子中单词建树,数据量会很大,而且有多余的部分(分析实例,其中有很多没有词根的是直接输出的,因此我们建树的话,待会这个树会很庞大,且很多枝干是多余的存在的),反过来看,用词根建树,.原创 2021-04-19 12:57:53 · 210 阅读 · 0 评论 -
序列化、反序列化二叉树
序列化:用前序遍历,生成字符串。反序列化:将字符串根据分隔符(逗号),切割成子字符串需要注意的是,遍历时我们一般用void 返回值,将遍历值保存在数组中,生成树时,一般用树节点作为返回值 //遍历的模板void proess(TreeNode* root,vector<int>& my_vec) { if(root == nullptr)return ; proess(root->left,my_vec); ..原创 2021-04-17 11:43:07 · 169 阅读 · 0 评论 -
前缀树
介绍两种解题方法:1.用哈希表法;2.维护一个前缀树;先讲哈希表法,这是本题的一种暴力解法,万不得已,不使用,面试中别用,机考中可能会超时,好处就是思路简单,coding简单;思路:用两个哈希表,一个用于查,一个用于查前缀。这在插入时,就需要将插入字符串,添加到两个哈希表中。存放前缀的哈希表,需要将插入的字符串,按前缀逐步插入到表中。后续的查操作就很简单,直接使用哈希表的查操作。class Trie { public: Trie() { } .原创 2021-04-16 16:02:52 · 129 阅读 · 0 评论 -
容器盛水问题
该题与leetcode中接雨水,同问题。以下,用双向队列,单调队列完成此题。(本题是单调减小)困难之处在于如何来维护这个单调队列。观察题意。有以下解题思路(字丑勿喷)class Solution {public: /** * max water * @param arr int整型vector the array * @return long长整型 */ long long maxWater(vector<int>&..原创 2021-04-14 17:06:27 · 248 阅读 · 0 评论 -
重排链表
题目描述 将给定的单链表 L\ L L: L0→L1→…→Ln−1→LnL_0→L_1→…→L_{n-1}→L_ nL0→L1→…→Ln−1→Ln 重新排序为:L0→Ln→L1→Ln−1→L2→Ln−2→…L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…L0→Ln→L1→Ln−1→L2→Ln−2→… 要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。 例如: 对于给定的单链表{10,20,30,40},将其重新排序为{10,40,20,原创 2021-04-14 11:26:41 · 132 阅读 · 0 评论 -
LeetCode179 最大数
最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:“10”解题思路:优先队列+自定义排序,时间复杂度On,空间复杂度On1.转换成字符串格式;2.自定义排.原创 2021-04-12 18:00:12 · 119 阅读 · 0 评论