算法day 23

分布式ID生成-雪花算法(Snowflake)

1 描述 使用原生Java方式生成雪花算法, 雪花算法是推特公司开源的生成唯一ID的算法, 性能更高,可以避免对第三方依赖的使用, 减少耦合 1)能满足高并发分布式系统环境下ID不重复 2)基于时间戳,可以保证基本有序递增,即按照时间趋势递增(有些业务场景对这个有要求) 3)算法本身不依赖第三方的库 ......
分布式 算法 雪花 Snowflake

闲话 23.3.21

闲话 明天集训就结束了( 同学们吃外卖吃够了吗( image upd: 今日推歌:热异常(covered by 异世界情绪) 异世界情绪为什么是神? 模拟赛 T1 会维护静态区间子区间 mex 和吧? 不会?会维护静态区间 mex 吧?套个历史版本和就没了。 mex 是最小,mix 其实就是次小。因 ......
23 21

day7

LeetCode 454.四数相加II 题目/视频/文章链接: 454.四数相加|| 个人第一时间看法: 考虑到之前做过的两数之和,得用哈希表来解决,只不过对于四个数组的操作有点懵,感觉无从下手,只想到四个for循环暴力解决。 看完代码随想录的想法: 鉴于两数之和的操作,可以将四个数组分成两大组来进 ......
day7 day

三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法

https://blog.csdn.net/xbinworld/article/details/65660665 ......

代码随想录算法训练营Day49 动态规划

#代码随想录算法训练营 代码随想录算法训练营Day49 动态规划| 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 题目链接: 121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的 ......
随想录 训练营 随想 算法 代码

算法学习

算法 排序 选择 找到最小的index,然后再交换 冒泡 一直在换位置 冒泡从小到大, 但是不断的找最大的,像爬山 最大的在上面 气泡也是 最大的在上面 因为他没有控制尾部,所以并不知道尾部是不是有序的。所以只有挨着遍历 插入 插入可以到达 O(N) 因为如果一旦满足最大情况 ,就不进行比较了,进入 ......
算法

学习记录:第一周day01笔记

linux系统简单介绍: BCPL->New B->C->Unix->Minix->Linux->gcc为了编译LInux内核产生 美国贝尔实验室 1.cd命令: cd 文件路径:进入某个目录 / :根目录,所有文件都存储在该目录下 ~:用户主目录,linux提供一个快捷方式cd可以直接回到用户主目 ......
笔记 day 01

学习记录:第一周day02笔记

vim文本编辑器: 可以直接在终端下采用纯键盘操作的一款文本编辑器(号称编辑器之神,可以升级、可以扩展) 基础用法: 1、进入vim: 输入 vim file.c 文件存在则打开,否则新建并打开 2、输入i: 进入编辑模式,编写代码 3、保存并退出 按Esc,输入ZZ保存并退出 vim三大模式: 正 ......
笔记 day 02

学习记录:第一周day03笔记

一、数据类型 为什么要对数据进行分类? 1、现实中的数据就是自带类别属性的 2、对数据进行分类可以节约内存存储空间、提高运行速度 存储空间的单位: Bit 比特 存储1个二进制位,只能存储0或1,是计算机存储数据的最小单位 Byte 字节 存储8个二进制位,是计算机存储数据的基本单位 KB(Kb) ......
笔记 day 03

学习记录:第一周day04笔记

一、for循环语句 循环:就是一种让代码反复执行的方式,从而达到想要的效果 for循环一般会使用一个变量来引导循环的进行,这一变量叫做该循环的循环变量 i index for循环的变化很灵活,但也很危险 for循环的括号问题: 1、for循环内只有一行代码时,大括号可以省略 但是这样不利于后期代码扩 ......
笔记 day 04

学习记录:第一周day05笔记

一、数组 什么是数组:变量的组合,是一种批量定义相同类型变量的方式 定义: 类型名 数组名[数量]; int arr[5]; 注意:数组的内存空间是连续分配的,且数组的长度一旦确定就无法改变 使用:数组名[下标]; 下标:从0开始,范围:0~数量-1 可以是任意整型表达式,包括整型变量和整型常量 遍 ......
笔记 day 05

学习记录:第二周day01笔记

一、Window下获取方向键 1、导入头文件 #include<conio.h> 2、通过getch()获取键盘上的键值 上:72 下:80 左:75 右:77 二、Linux下获取方向键: 1、在Window中把getch.h文件放入共享文件夹中 2、在Linux的共享文件夹下执行 mv getc ......
笔记 day 01

学习记录:第二周day02笔记

进制转换 1、为什么使用二进制、八进制、十六进制? 因为目前CPU只能识别高低两种电平,只能对二进制数据进行计算 二进制虽然能够直接别计算机识别但是不方便人去书写和记录,因此就把二进制数据转换成八进制,方便记录到文档中 随着CPU的位数的不断增加(目前已经到64位),八进制不再能够用满足需求,因此发 ......
笔记 day 02

day21 打卡530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

day21 打卡530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 530题目链接 1.递归法——使用双指针。因为是二叉搜索树,所以中序遍历是递增的。所以最小值的产生肯定是前一个和后一个之间。 class Solution { ......
祖先 day 530 501 236

【编程算法】【寻路】【A*优化 - 束搜索】

束搜索的好处,就在于,他可以通过剪枝减少搜索的节点,减少时间和空间的消耗但是劣势就是不一定得到最佳路径,如果把他的光束收缩到最小,就是贪心算法 1. 在存储有限的情况下进行类似的宽度优先的图搜索算法 2. 在搜索空间很大的情况下对图搜索进行存储限制的重要性 ......
算法

【编程算法】【寻路】【A*优化 - 迭代加深A*(IDA*)】

限定下限的深度优先搜索 由于不再采用动态规划的方法,节省内存 最大的优点:找到最短路径情况下,需要最小内存 但是是时间换空间,不会记得走过一条路 IDA-Star(IDA*) Algorithm in general « Insight into programming algorithms (wo ......
算法 IDA

合并链表-leetcode23-合并k个升序链表

给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] ......
升序 leetcode 23

javaSE-day03(常用API一)

API(Application Programming interface)意思是应用程序编程接口,说人话就是Java帮我们写好的一些程序,如:类、方法等,我们直接拿过来用就可以解决一些问题。可以在API文档进行查询 1.Object类 Object类是Java中所有类的祖宗类,因此,Java中所有 ......
javaSE-day 常用 javaSE day API

javaSE-day12(多线程)

1.多线程的常用方法 Thread提供了很多与线程操作相关的方法 方法: public void run(): 线程的任务方法 public void start(): 启动线程 public String getName(): 获取当前线程的名称,线程名称默认是Thread-索引 public v ......
线程 javaSE-day javaSE day 12

react的diff算法

diff策略 React用 三大策略 将O(n^3)复杂度 转化为 O(n)复杂度 策略一(tree diff): Web UI中DOM节点跨层级的移动操作特别少,可以忽略不计。 策略二(component diff): 拥有相同类的两个组件 生成相似的树形结构, 拥有不同类的两个组件 生成不同的树 ......
算法 react diff

解决黑马智慧物业管理系统项目搭建问题2月23日

今天是整了大半天,浪费了很多时间。一直报的错就是找不到1、类似于这个错误,分明在pom文件中添加了springframework依赖,但还是不行,后又严格按照黑马的环境配置进行操作。但感觉都是些编码格式问题,我猜测关键是因为下载了黑马的repository文件,估计是里面的包很全,所以在Maven里 ......
黑马 物业管理 物业 智慧 项目

算法笔记

算法笔记 10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树; 10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法 股票问题系列通解(转载翻译) - 力扣(LeetCode) 数据结构和容器 基本类型: int,lo ......
算法 笔记

day102-HttpServletRequest

HttpServletRequest 获取前端传递的参数,请求转发 req.getParameter() req.getParameterValues() 获取参数 public class LoginServlet extends HttpServlet { @Override protected ......
HttpServletRequest day 102

day101-HttpServletResponse实现重定向

HttpServletResponse实现重定向 一个web资源收到客户端请求后,通知a客户访问另一个web资源,这个过程叫重定向 常见场景:用户登录 使用resp.sendRedirect请求跳转至指定的页面 public class RedirectServlet extends HttpSer ......
HttpServletResponse day 101

算法总结--动态规划

声明(~~叠甲~~):鄙人水平有限,本文为作者的学习总结,仅供参考。 ##1.动态规划介绍 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。其中每一个状态一定是由上一个状态推导出来,这是DP的一个重要标志。 ##2.DP大法的使 ......
算法 动态

机器学习算法(一): 基于逻辑回归的分类预测

逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。 ......
算法 逻辑 机器

算法 | 中缀表达式转后缀表达式并计算结果(利用栈)

1.手动实现中缀转后缀 2.代码实现中缀转后缀并计算表达式结果 为了简化问题,假设算术运算符仅由加、减、乘、除4种运算符和左、右括号组成。 step1: 声明栈结构 #include <iostream> #include <string> using namespace std; #define ......
表达式 中缀 后缀 算法 结果

【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(Paxos篇)

概念简介 Paxos是一种基于消息传递具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。 发展历史 Paxos算法的发展历史追溯到古希腊,当时有一个名为“Paxos“的小岛, 岛上采用一会的形式通过法令, 议会中议员通过信使进行消息传递,议员与信使都是兼职的,他们随时都 ......
分布式 技术 一致性 算法 架构

复杂度分析:如何分析、统计算法的执行效率和资源消耗

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。 ......
复杂度 算法 效率 资源

算法学习笔记(19): 树上启发式合并(DSU on tree)

树上启发式合并 DSU on tree,我也不知道DSU是啥意思 这是一种看似特别玄学的优化 可以把树上部分问题由 $O(n^2)$ 优化到 $O(n \log n)$。 例如 CodeForces 600E。 又例如一道神奇的题: 适用情况 可以离线的部分树上问题。 需要子树上的所有信息,但是信息 ......
算法 笔记 tree DSU 19