抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

CAS简记

CAS(Compare And Swap)CAS是一种乐观锁。何谓悲观,编译器认为就是如果不严格同步线程调用则一定会产生异常,所以悲观锁会阻塞其他所有线程调用(互斥)。 但是并不是所有操作都一定会产生异常,如多线程的读操作就不会。 CAS机制在多线程对共享资源访问时比较共享资源当前的状态(newValue)和发起调用时的状态(oldValue)。如果状态一样则还没其他线程访问,这个线程(sw...

有趣的算法问题

随机模拟问题分钱问题房间里有100个人,每个人有100块钱,他们在玩一个游戏。没轮游戏中,每个人都拿出一元前随机给另一个人,最后这100个人的财富分布是怎样的? 最后分布将是非常无序的,而非每人差不多。相当于100x100分给100个人,而每个人差不多的概率其实是小概率事件。 蒙特卡洛算法蒙特卡洛方法是一种统计学的方法,是一种模拟。通过大量随机样本,去了解一个系统,进而得到所要计算的值。 蒙...

leetcode算法笔记

AbstractTODO learn 贪心 剪枝 dp 的思想和trade off PrefaceOverview双指针两数之和有序数组中找两数和为目标数 双指针, 小了移左, 大了移右 两数平方和给c,判断存在a, b有, f = a*a + b*b = c 双指针, f小了移左, f大了移右 最长子序列遍历src,尝试匹配dst 贪心法无重叠区间leetcode 思考会议预约,区间(st...

acwing算法

AbstractPrefaceAlgo贪心 区间问题 套路: 左端点排序或右端点排序 证明套路: ans <= cnt + ans >= cnt => cnt = ans得整算法正确性 区间分组问题 套路: 左端点排序或右端点排序 可以使用最小堆等数据结构, 用一个”代表者”代替整个组, 就不用维护整个map 证明套路: ans <= cnt + an...

闫氏DP分析法

Abstract从集合的角度思考问题 动态规划 动态规划 状态表示dp(i, j, k, l, ...) 集合: 想办法归类, e.g. 走到[i, j]的路线, [i, j]i天j人的情况 属性: 常见的就MAX/MIN/数量 状态计算: 集合划分, 划分后的集合分别怎么计算得到 一个重要的依据: “最后” 不吝啬特判 e.g. 来自哪里

算法速查表

算法速查表 dp, 最短子序列 dp, 最短编辑距离: 增删改的最小次数 编辑距离 dp + bottom up, 石子合并 二分, leetcode 1802. 有界数组中指定下标处的最大值 边界, new mid(新边界) dp, 完全背包问题(物品个数不限) 差分 给定一个数n, 快速求[0, n]中奇数偶数的个数 dp, 最短hamilton路径 bitmap状态枚举 三角不...