- 博客(7)
- 收藏
- 关注
原创 Trie树
Trie树:又称前缀树/字典树,多用于保存关联性数组,因其每个节点的所有子孙均具有相同的前缀而得名。性质:基本性质(以保存字符串为例)1,根节点不保存字符,除此之外每个节点只保存一个字符。2,从根节点dfs到某一个节点,将路径上经过的字符顺序连接起来,即为该节点对应的字符串。3,每个节点的所有子节点包含的字符互不相同。特点:优势:可以极大限度的避免多余的字符比较,实现快速查找,并且相较于哈希表,trie树并不存在冲突。缺点:以空间换时间,其每一个节点都可能包含至多字符集大小数目的指针。
2021-04-10 09:49:46
91
原创 并查集
原理:初始状态下并查集内所有元素各自为一个森林的头结点,通过关系的判定完成森林的合并,最终将所有可连通的元素均划分至一片森林中。union_find.h#pragma once#include<vector>class union_find{public: /*1、初始化 */ union_find(int n); /*2、将两节点按秩合并*/ void union_(int p, int q); /*3、判断两节点是否连通*/ bool connect(int p,
2021-04-08 11:37:55
101
原创 反转链表
思路记录当前节点与当前节点的下一节点,反转过程即为将当前节点插入到虚拟头节点与虚拟头节点的下一元素之间,再利用维系的下一节点来改变当前节点所指向的位置。class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead==nullptr) return pHead; ListNode* p = new ListNode(-1); ListNode* cur = pHe
2021-04-06 22:30:53
88
原创 一致性哈希原理及实现(C++版)
一致性哈希定义:主要应用于解决分布式缓存的问题,在移除或者添加服务器(哪怕只改变一个)时,能够尽量的减少对已存在的服务请求与请求服务器之间的映射的影响。在分布式系统中,通常可以将对象与节点的映射关系简单看做key%n,如果节点(即n)发生变动时,会使得很大一部分对象的映射找不到对应的“桶”,或者是新增的“桶”无法得到利用。而一致性哈希算法则具有极小的迁移成本,并且通过虚拟节点可以很大程度上实现负载的均衡性、分散性。原理:一致性哈希是将一段数据范围作为”桶“,再将实际具有的节点映射到”桶区域“中的某
2021-04-06 14:20:23
778
原创 删除有序数组中的重复项II
双指针标记class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size()<=2) return nums.size(); int start=0,second=1,count=2; for(int i=2;i<nums.size();i++) { if(nums[i
2021-04-06 08:26:53
103
原创 合并两有序数组
逆向双指针class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int start1 = m-1,start2 = n-1; while(start1>=0&&start2>=0) { if(nums1[start1]>=nu
2021-04-05 17:45:03
72
原创 栈的实现
基于单链表实现栈特点:节点插入、删除速度快,最新插入的节点将一直位于链表的头部位置stack.hmain.cpp特点:节点插入、删除速度快,最新插入的节点将一直位于链表的头部位置你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。stack.h#ifndef STACK_H#define STACK_Htemplate<typename T>class Node
2021-04-05 17:30:48
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人