数据结构
文章平均质量分 75
Li-eng
个人blog:www.lienguang.com
展开
-
【数据结构】一文搞懂并查集
在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。举例:求朋友圈链接:https://www.nowcoder.com/questionTerminal/a5c097f75db8418395b6a0e32c608c38假设有N个用户,其中有些人是朋友,有些则不是。A和B是朋友,B和C是朋友,这样ABC就是一个朋友圈,请计算给定的朋友关系的朋友圈数。给原创 2021-09-03 15:53:14 · 177 阅读 · 0 评论 -
【题目记录】巧妙解决 二进制中1的个数
题目链接输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。方法一:二进制移位法让一个数0x01从右向左与val的每一位进行&操作来判断class Solution {public: int NumberOf1(int n) { int ans = 0; int mark = 0x01; while (mark != 0) { if (mark & n) ++ans;原创 2021-03-29 16:32:29 · 101 阅读 · 0 评论 -
【算法题记录】实现一下 Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x的n次方)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25暴力是会超时的,这个过不了double myPow(double x, int n) { double tmp=1;原创 2021-03-28 00:20:13 · 213 阅读 · 0 评论 -
哈希索引、B+树索引(聚集,非聚集,联合,覆盖)
在数据库中,表、数据、索引之间的关系就类似于书籍、书籍内容、书籍目录。什么是索引倘若不使用索引,则MySQL必须遍历整个表,直到找到数据,而表越大,查询的时间则越长,则数据库的效率也就越低。而索引就类似于书籍的目录,可以帮助我们快速的定位、检索到需要的数据行,对提高数据库的性能有着很大的帮助。索引优缺点与适用场景优点大大加快了数据检索的速度所有的列类型都可以被索引,也就是可以给任意字段设置索引缺点索引需要占用物理空间,建立的索引越多则需要的空间越大创建和维护索引需要耗费时间,并原创 2021-03-24 18:15:17 · 561 阅读 · 2 评论 -
一致性哈希算法 consistent hashing
一致性哈希算法 consistent hashing在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先来描述一下这个经典的分布式缓存的应用场景。场景描述假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在,有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便它们能够分摊缓存的压力。也就是说,我们希望每台服务器能够缓存1万张左右原创 2021-03-14 12:14:53 · 94 阅读 · 0 评论 -
【牛客刷题系列】二分查找常见面试题总结
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例1输入 7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]返回值 true实现方法1.暴力搜索:时间复杂度O(n^2),直接全部遍历,因为最坏情况下,数组中的元素都需要遍历一次class Solution {public: bool原创 2021-02-24 20:07:06 · 160 阅读 · 0 评论 -
【牛客刷题系列】栈和队列常见面试题总结
题目描述用两个栈来实现一个队列, 完成队列的Push和Pop操作 队列中的元素为int类型链接:题目牛客链接思路因为栈是后进先出,而队列是先进先出,因此,如果想把入了一个栈(1号栈)的元素按照队列那样先出最前面的元素,就要借助另一个栈(2号栈),先把1号栈的所有元素全部导入到2号栈,pop的时候就出2号栈的元素,这样就实现了队列。可以这样做,首先1号、2号全部为空的入队的操作全部在1号完成,就比如入栈 数字1、2、3如果出队,肯定先出的是1,就要先把1号里的全部导入到2号,也就是数字3先出原创 2021-02-24 18:43:47 · 144 阅读 · 0 评论 -
【牛客刷题系列】链表常见笔试题总结
题目描述输入一个链表,反转链表后,输出新链表的表头示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL牛客——反转链表实现思路class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode* newhead=nullptr; ListNode* tmp=nullpt原创 2021-02-23 23:15:28 · 279 阅读 · 0 评论 -
【排序算法系列】常见排序算法总结,复杂度分析
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程(递归的过程),直到所有元素都排列在相应位置上为止。实现原理void quicksort(int begin,int end){ if (begin >= end) //只有一个元素 return; //划分当前区间 int pos=pa原创 2021-02-22 22:18:22 · 273 阅读 · 0 评论 -
【牛客刷题系列】贪心算法相关面试题总结
组队竞赛题目描述链接:组队竞赛来源:牛客网牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。如样例原创 2020-11-27 13:41:51 · 555 阅读 · 0 评论 -
【牛客刷题系列】字符串常见面试题总结
字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2:输入: num1 = “123”, num2 = “456” 输出: “56088” 说明:num1 和 num2 的长度小于110。 num1 和 num2 只包含数字 0-9。 num1 和 num2 均不以零开头,除非是数字0 本身。不能使用任何标准库的大数类型(原创 2020-11-14 17:16:05 · 1238 阅读 · 0 评论