算法
文章平均质量分 65
Zevin~
这个作者很懒,什么都没留下…
展开
-
一致性hash
都是虚拟节点,A1,A2的数据存储在机器A上,机器B负载B1,B2的数据 …,这些虚拟节点的数量很多,分布均匀,所以不会造成一个。如果按照顺序延续,一个节点坏了,另一个节点承当前一个节点的数据,这样可能导致自身的负载上升,导致自己也挂掉了。,具体可以使用服务器的ip或者主机名作为关键字进行hash,这样每台机器就能确定的落在。走,第一个遇到的服务器就是其应该定位到的服务器,并将该key。,某个机器坏了,分母的数量改变了,自然取于数就不行了。依次类推,存储在顺时针的第一个节点上。原创 2023-03-20 13:21:14 · 483 阅读 · 0 评论 -
log算法
文章目录二分查找1.查找大于等于x的最小值查找重复数组中x的最小下标二分答案进击的奶牛二分查找1.查找大于等于x的最小值#include<iostream>using namespace std;const int MAXN = 1e6 + 7;int num[MAXN];int n;int binary(int x){ int ans = -1;//-1说明ans不存在 int left = 0, right = n - 1; int mid; while (原创 2022-01-13 01:05:40 · 597 阅读 · 0 评论 -
RMQ 问题——ST表
文章目录RMQ问题例题模板:区间最值例题:区间最大公约数区间最大间距RMQ问题不带修改的区间最值,重叠的区间不会对区间的最大值产生影响可以用 ST表(稀疏表)(不带修改的区间问题可以用,一经修改就不可以用了)例题模板:区间最值 int dp[8][35];//dp[i][j]表示左端点为i,长度为2^j这样的长度的区间,也就是<==>ans[i][i+2^j-1] int query(int l, int r ) { int j = (int)log2(r - l + 1原创 2022-01-09 17:28:37 · 486 阅读 · 0 评论 -
数论---扩展欧几里得算法
文章目录欧几里得算法(辗转相除法)最小公倍数贝祖定理扩展欧几里得算法欧几里得算法(辗转相除法)欧几里得算法是用于求最大公约数任何一个数a都可以表示成a=pb+r如果r=0则b就是其最大公约数如果r!=0,就转化为b,r的a,q,p,r均为整数gcd表示最大公约数gcd(a,b)=gcd(b,r)=gcd(b,a%b)因此结束条件就是r=0,即b=0typedef long long ll;//最大公约数int gcd(int a, int b){ return b原创 2022-01-07 23:29:12 · 751 阅读 · 6 评论 -
归并排序详解
文章目录稳定性归并排序递归版非递归版本版本1版本2稳定性稳定性:保持相对位置不变冒泡排序,归并排序,直接插入排序的具有稳定性,在排序的时候不会改变数据的相对位置快速排序,希尔排序,选择排序都不具有稳定性综合比较之下快速排序的效率最高,在大多面试时候也多以快速排序,堆排序,归并排序为主归并排序递归版#include<stdio.h>#include<stdlib.h>void _mergesort(int *a,int left,int right,in原创 2022-01-07 21:22:26 · 762 阅读 · 2 评论 -
前缀和与差分
文章目录一维前缀和一维差分二维前缀和二维差分一维前缀和sum[i]=sum[i-1]+a[i];i>0sum[i]=sum[0]=a[0] ;i=0arr 1,3, 7, 5, 2sum 1,4,11,16,18sum[i]是0到i的区间和如2到4的区间和,k-rsum[r,k]=sum[k]-sum[r-1]; r>0,r=0的时候, sum[k] r=0;#define getsum(k,r) (k?sum[r]-sum[k-1]:su原创 2021-12-25 17:45:00 · 536 阅读 · 15 评论 -
位运算之按位与
文章目录按位与的概念1.判断奇偶性2.保留最后5个数2 的幂2进制数中位1的个数二进制表示中质数个计算置位根据数字二进制下 1 的数目排序按位与的概念1.按位与,两个都为1则为1,有一个0就是02.无论是0还是1只要和1与上之后,都保持不变3.无论是0还是1只要和0与上之后,就变成04.在c语言中,前缀0b代表2进制数,如0b001,前导0可有可无1.判断奇偶性int main(){ int c = 3; if (c & 0b1)//前导0b代表他是2进制数,最后1和任何原创 2021-12-17 12:26:16 · 14643 阅读 · 0 评论 -
贪心算法初步学习
文章目录概述海盗船种花问题小行星碰撞概述每一步都根据当前的信息做出选择,一担选择,都不会改变(不会反悔)用局部的最优解,达到整体的最优解海盗船海盗船实际问题:一群海盗截获了一艘装满各种金银珠宝和古董的货船,每一件宝物都价值连城一旦打碎就失去了价值。海盗船的载重量为C,每件宝物的重量为Wi,海盗们应该如何把尽可能多的宝物装上船?分析,每次选最小的int main(){ int arr[10] = { 2,34,6,67,33,47,56,567,1,4 }; heapsort(原创 2021-12-16 22:44:03 · 258 阅读 · 7 评论 -
超完整素数算法总结归纳
目录素数的判定Eratosthenes筛选(素数筛选)因子数与因子和完美数n的第k个因子分拆质数和分解质因数最接近的因数丑数素数的判定Eratosthenes筛选(素数筛选)因子数与因子和完美数n的第k个因子分拆质数和分解质因数四因数最接近的因数丑数素数的判定素数的概念是只可以被1和他本身可以整除所以我们可以使用试除法,如一个数为n(用2-n-1)对n进行试除,但是这样的话时间复杂度是O(N)#...原创 2021-12-06 20:50:11 · 3261 阅读 · 10 评论 -
异或的高级用法以及LeetCode刷题
目录1.异或特性介绍2.消失的数字3数组中数字出现的次数4.消失的两个数字1.异或特性介绍异或:在二进制的表示中,两个数异或,同位上的两个数,异或,不同则为1,相同为0如4^94二进制表示 0000 0000 0000 0000 0000 0000 0000 01009二进制表示 0000 0000 0000 0000 0000 0000 0000 1001两者异或之后的结果是 0000 0000 0000 000...原创 2021-12-02 18:11:04 · 795 阅读 · 10 评论 -
细数排序(1)
插入排序void insertsort(int *arr, int n){ int i; for (i = 0; i < n - 1; i++) { int end = i; int tmp = arr[end + 1]; while (end >= 0) { if (tmp < arr[end]) { arr[end + 1] = arr[end]; end--; } else { bre原创 2021-11-30 18:12:38 · 368 阅读 · 0 评论 -
算法零基础——大数四则运算
目录字符串相加字符串相乘二进制求和千位分隔数我们知道无论任何类型都有数字的最大范围,所以我们如果想要对于任何两个数都能够进行四则运算,那么我们就可以运用一个字符串进行运算字符串相加字符串相加给定两个字符串形式的非负整数num1 和num2,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger),也不能直接将输入的字符串转换为整数形式。示例 1:输入:num1 = "11", num2 = "123"...原创 2021-11-30 17:53:02 · 902 阅读 · 1 评论 -
算法零基础——计数数组
目录引言(计数法与计数数组)唯一元素的和找到所有数组中消失的数字好数对的数目检查是否所有字符出现次数相同字符串中的第一个唯一字符引言(计数法与计数数组)唯一元素的和找到所有数组中消失的数字好数对的数目检查是否所有字符出现次数相同字符串中的第一个唯一字符引言(计数法与计数数组)我们经常用一个奇数元素来统计元素出现的次数如我们统计智商超过163的有多少人,就可以用一个计数法int func(int *iq, int size) ...原创 2021-11-26 22:04:47 · 1572 阅读 · 2 评论 -
跟着英雄学算法--矩阵
对矩阵进行深度讲解,以及力扣题解原创 2021-11-20 00:54:37 · 241 阅读 · 8 评论 -
跟着英雄学算法2数列
求斐波那契数列我们使用一般的递归会造成栈溢出那么我们就可以使用一个数组来接收这个数int fib(int n) { int f[31]; // (1) f[0] = 0, f[1] = 1; // (2) for(int i = 2; i <= n; ++i) { // (3) f[i] = f[i-1] + f[i-2]; // (4) } retur..原创 2021-11-16 22:44:36 · 65 阅读 · 0 评论 -
《算法零基础100讲》(第1讲) 幂和对数
跟着英雄学算法打卡第一天bool isPowerOfFour(int n){ if(n == 0) { return false; // (1) } int x = (int)(log2(n) / log2(4) + 1e-8); // (2) return fabs(n - pow(4, x)) < 1e-8; // (3)}bool类型是用来判断真假的,true为1原创 2021-11-15 23:31:05 · 468 阅读 · 3 评论