算法
文章平均质量分 85
不知为MUJI
站在树上的鸟从不害怕树枝断裂,因为它相信的不是树,而是翅膀。
展开
-
【算法设计】限流算法
目录1.现有算法1.2 维度设计2.分布式2.1 redis共享存储2.1.1 缺点:2.1.2 优化方案:2.2 每台机器单独限流 totalth/machineCount2.2.1 缺点:2.2.2 优化方案:1.现有算法 计数器 桶 计数器 滑动窗口 漏...原创 2020-04-16 15:16:58 · 319 阅读 · 0 评论 -
【算法】分治法
目录1.简介2.算法模式3.样例3.1 合并排序法( Merge Sort )3.2 快速排序( Quicksort )3.3leetCode 1238循环码排列3.3.1 分析:3.3.2 源码1.简介分而治之(Divide and Conquer),分割问题、各个击破。将一个大问题,分割成许多小问题。如果小问题还是很难,就继续分割成更小的问题,直到问...原创 2019-12-19 12:23:50 · 293 阅读 · 0 评论 -
【算法】回溯法
简介回溯法(Backtracking)使用递归,依次枚举 各个阶段的可能值,形成所有可能的多阶段决策,并且(剪枝)在递归过程中避免枚举不正确的可能。最经典的题目是 全排列、8皇后、所有子集、所有组合、0/1背包等等回溯模式void backtrack ( int i ) { /* prune:剪枝 */ if ( solution [] will not...原创 2019-12-16 18:59:04 · 197 阅读 · 0 评论 -
【算法】动态规划
目录1.解决什么类型问题1.1 计数问题1.2 极值问题2.特性2.1 重复子问题2.2 无后效性2.3 最优化子结构3.过程步骤3.1 设计步骤3.2 练习反馈Ex 1 最大子数组之和(easy)1.解决什么类型问题1.1 计数问题如最典型的青蛙跳,也就是斐波那契数列、棋盘路径问题、还有组合公式,不重复组合( Combination )...原创 2019-12-13 12:22:06 · 249 阅读 · 0 评论 -
【算法】标准排序之快排( Quicksort )
1.简介快速排序是很经典的分治算法,大概的算法思路就是将大数组划分partition为两个子数组,左数组整块小于右数组(max(left)<min(right)),然后递归处理左子数组和右子数组,如下图所示:2.算法实现2.1 quickSort递归 Divide 阶段(partition): 挑一个数当作pivot基准, 把数组分割...原创 2019-12-12 11:13:21 · 491 阅读 · 0 评论 -
【数据结构-链表】旋转链表
1.题目61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: ...原创 2019-10-28 18:10:45 · 169 阅读 · 0 评论 -
【JDK源码阅读】容器HashMap(jdk 1.8)
1.类图分析1.1 容器table 桶,元素Node节点 默认16个桶transient get、put entrySet <k,v>对 集合transient entrySet() keySet k 集合 keySet()方法 values v 集合 values()方法返回 1.3 变量...原创 2019-10-21 20:58:04 · 169 阅读 · 0 评论 -
算法分析笔记
渐进时间复杂度估计程序的时间开销,一般统计程序中“基本操作”的数量,可排除机器速度的影响,衡量算法优劣。“基本操作”的数量往往可以写成关于“输入规模”n的表达式,保留增长最大项并忽略系数得到的表达式成为算法的渐进时间复杂度。 忽略了很多细节因素,并不精确,但抓住主要矛盾!上界O、下界Ω、同阶Θ标记T(n) = Θ(f(n)) 表示T(n)与f(n)同阶,增长情况相同。 O 表示增长率小于f(n)原创 2019-04-04 15:37:08 · 521 阅读 · 1 评论 -
回溯法整理 含leetCode例题
定义把问题分为若干步骤并递归求解时,若当前步骤没有合法选择,则函数返回上一级递归调用,这种现象称为回溯。也成为递归枚举方法。应用搜索可行解(数量)、e.g.八皇后、数独 最优方案搜索(剪枝,记录下当前最优可行解,若在某一步骤的局部解已经劣于当前最优,则剪枝)易错点如果在回溯法中使用的辅助的全局变量,在枚举当前步骤的多个选项时修改了一定要及时把它恢复原状,若函数有多个出口,在每个出口处恢复。冲突约数原创 2019-04-04 15:36:04 · 276 阅读 · 0 评论 -
回文串划分 leetCode 132 Palindrome Partitioning II
回文串划分输入小写字符串,划分成尽量少的回文串。输出最小切分数 输入:aaadbccb 输出:2 aaa、d、bccb需要两刀分割成3个回文子串。分析d[i]表示input.substring(0,i)子串的最少回文子串个数 状态转移:d[i]=min(d[j]+1|input.substring(j,i)是回文) 刀数 = 回文子串数-1代码块public class Solution原创 2019-04-04 15:38:13 · 170 阅读 · 0 评论