自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 算法知识及有用链接

树状数组(binary indexed tree)RMQ segment tree的实现(不带update),通常的实现是通过一个辅助函数以及递归操作,比如gist上有一个带update的python实现。另外一种实现是通过类似堆的方式表示树,通过位操作访问父节点或子节点,效率非常高,强烈推荐这篇文章,不仅给出了详细的解释,还对各种变体给出了方案。二分图最大匹配的König定理及其证明跳跃表Sk...

2015-05-20 10:36:42 510

原创 找到邻接矩阵中出度为0入度为V-1的顶点

要求时间复杂度为O(V)。假设邻接矩阵为g,g[i][j]表示顶点i到顶点j有一条边,那么我们要找的就是这样一个i:第i行全部为0,且第i列除了g[i][i]之外全部为1。我们随便选一对i和j,如果g[i][j]为1的话,那么可以划掉第i行(也就是排除掉了i),如果g[i][j]为1,那么就可以划掉第j列。只要检查一个格子就可以排除掉一个选项,所以运行时间为O(V)。def find(g): n = len(g) vertices = list(range(n)) while

2021-03-26 03:29:00 576

原创 Codility题解之MaxNotPresent

Codility challenge: Germanium 2018题目地址https://app.codility.com/programmers/task/max_not_present/桌子上有N张卡片,每个卡片正反面都有一个正整数,可以随意翻转卡片,使得最小的没有出现在卡片上方的数字最大。首先,结果一定会小于等于N+1,所以大于N的数字不用考虑。解法用到了并查集和树的知识。如...

2019-12-07 13:46:59 403

原创 程序员代码面试指南之单调栈结构

题目来《程序员代码面试指南》第2版,作者左程云。对于一个数组(可能有重复元素),对于每个元素arr[i],找到它左边和右边小于arr[i]且离i最近的元素下标,找不到时返回-1。书中为了克服相同元素带来的麻烦,使用了一个stack<list>,其实不需要,stack<int>即可。分析:利用一个非递减的单调栈(即允许重复元素的递增栈)。对于任意两个元素arr[j],...

2019-10-24 12:27:59 321

原创 Visual studio Configuration 和 Platform

0. 工具栏的active选项和Configuration manager顶部的选项是完全一致的,修改其中一个会导致另一个立即变化。1. 变更active选项(即在工具栏下拉列表选择不同的选项)并不会修改sln文件。可能会修改.vs下面的隐藏文件,这样你下次打开vs时会记住上次的选项。2. 每一个active选项对应的是Project Contexts的一个组合。每次选择一个不同的active选项...

2018-03-07 18:20:30 3957

原创 python的实例属性与类属性

不说废话,上代码(python3)。class Cls: common = 7 #静态变量,在Cls的__dict__里面 def __init__(self): #实例方法,在Cls的__dict__里面 self.age = 5 #实例属性,在实例的__dict__ def f(self): #实例方法,在Cls的__dict__里面 ...

2018-03-02 14:37:18 374

原创 Git使用总结

仓库与分支克隆远程仓库: git clone &lt;remote_url&gt;,Clone之后会将远程仓库整个下载下来,并起名origin。另外会建立一个local的master分支(可以认为是把origin/master复制了一份),并与origin/master关联起来。记住,你的所有修改都是针对local branch。查看远程仓库的信息: git remote -v查看local br...

2018-01-22 21:19:21 260

原创 二分查找中的循环不变式

以下代码来自python标准库,查找有序数组中第一个大于或等于x的元素位置,填加了一些注释。a[lo:hi](左闭右开)是待查找的区间,循环不变式为:lo左边的元素全部严格小于x,hi及hi右边的元素全部大于等于x。当循环结束时,lo==hi,根据循环不变式,可知hi为第一个大于等于x的元素。bisect_left(a, x, lo, hi): #assume a[lo-1]

2017-10-22 12:08:21 3840

原创 leetcode 644: 子数组的最大平均值

长度为n的数组,找出所有长度至少为k的子数组中,平均值最大的,输出这个最大的平均值。解法:用二分法查找平均值x,对于每个x去检查是否有子数组的平均值大于x。对于一个给定的x,首先将数组的所有元素减去x,然后看是否有子数组的和大于0即可。用数组S记录a[0]...a[i]的累加和,生成S的时候顺便记录前面的最小的S[j],看看S[i]-S[j]是否大于0即可。代码见官方示例。

2017-07-18 21:59:24 1934

原创 美团Codem编程比赛资格赛:数码

题目描述CodeM美团点评编程大赛资格赛时间限制:1秒空间限制:32768K给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。输入描述: 一行,两个整数 l 和 r (1 ≤ l ≤ r ≤ 10^9)。输出描述: 输出9行。第

2017-06-20 17:10:17 934

原创 《写给大忙人看的java SE8》笔记 -- 3. 杂项改进与java7新特性

时间和日期改进所有的java.time对象都是不可变的Instant是时间线上的一个点;Duration是两个Instant之间的时间差;Period类似Duration,考虑到了夏令时,适用于带时区的时间无闰秒,每天都是86400秒LocalDateTime没有时区信息,ZonedDateTime是时区中的一个时间点DateTimeFormatter用来格式化TemporalAdjust

2015-08-01 22:02:00 793

原创 《写给大忙人看的java SE8》笔记 -- 2. Stream

stream简介stream是一个java.util.stream.Stream对象。各种集合类都添加了创建stream的方法,如list.stream(), list.parallelStream()。Stream接口也包含了各种创建stream的静态方法。wordlist.stream().filter(w -> w.length() > 10).count();stream的特点

2015-07-30 22:46:32 1075

原创 《写给大忙人看的java SE8》笔记 -- 1. lambda表达式

函数式接口只含有一个抽象方法的接口,称为函数式接口。lambda表达式可以赋值并且仅可以赋值给函数式接口的变量。实际上编译器往往需要根据函数式接口推断lambda表达式的参数类型和返回值,比如:Comparator comp = (first, second) -> Integer.compare(first.length(), second.length())。实际上,你甚至无法将一个lam

2015-07-29 22:04:00 1353

原创 hadoop groupingComparator 与 secondary sort

《hadoop权威指南》里的例子:有许多气象记录,需要找出每年的最高温度,通过secondary sort实现。(这个任务其实简单的map-reduce就可以完成,这里只是为了演示secondary sort)map-reduce的shuffle阶段,只会根据key进行排序,而同一个key的value是无序的,所以要把年份和温度都放在key里面。map的输出:key为year-temperat

2015-03-18 12:15:18 1306

原创 LeetCode问题选

174 Dungeon Game题目链接 解题思路:动态规划。但是从左上角开始计算是不可行的,从右下角开始却是可以的,时间复杂度O(m*n)。参考解答164 Maximum Gap题目链接解题思路:找到最小和最大值minVal,maxVal,让后将整个区间分成n-1段,记录每段的最大值和最小值。那么最大的gap至少等于区间的长度,然后只要考察区间之间的gap即可。参考解

2015-03-11 17:27:24 504

原创 题目:Median of Two Sorted Arrays

题目来自Leetcode: There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).思路很显然,在一个数组中使用二分法,查找元

2015-02-11 17:22:27 480

原创 题目:海岸线长度

You will be given a map of Soteholm as an N×M grid. Each square in the grid has a side length of 1 km and is either water or land. Your goal is to compute the total length of sea coast of all islands.

2014-12-12 21:13:36 1420

原创 Algorithms 第4版 by Sedgewick 笔记

1.3算术表达式求值的双栈算法

2014-11-07 00:03:03 760

原创 深入理解java虚拟机笔记:高效并发

编译器的类型前端编译器

2014-09-15 17:56:40 955

原创 深入理解java虚拟机笔记:编译与执行

什么时候初始化一个类jinyou

2014-09-12 23:55:03 573

原创 深入理解java虚拟机笔记:自动内存管理

第2章 java内存区域寄存器架构的cpu和栈架构的cpu

2014-09-10 16:01:58 1185

原创 算法导论习题解-第24章单源最短路径

#24.1-3 BELLMAN_FORD算法提前终止解:

2014-08-11 22:32:18 1820

原创 算法导论习题解-第23章最小生成树

#23.1-1设(u,v)是连通图G中权重最小的边,证明(u,v)是某棵最小生成树的边。解:将Vge

2014-08-05 19:47:12 10243 2

原创 算法导论习题解-第22章基本的图算法

总结深度优先搜索按照访问顺序,每个顶点标记两个序号,首次访问时的次序,以及探索完该顶点所有分支时的次序。边可以分成四种:树边,前向边,后向边(回边),横向边。(图片来自 算法概论 by dasgupta)有向无环图和拓扑排序有向图有环当且仅当DFS过程中遇到回边。 有向无环图中每一条边都指向一个finish值更小的顶点。 对于DFS,无环性、可线性化、无回边三者是等价的。...

2014-08-01 19:56:29 8042 1

原创 算法导论习题解-第21章用于不相交集合的数据结构

习题编号以第3版为准#21-3 Tarjan的

2014-07-29 22:11:35 1486

原创 算法导论习题解-第18章B树

习题编号以第3版为准#18-2 连接与分裂2-3-4树

2014-07-29 22:05:59 1044

原创 算法导论习题解-第17章摊还分析

TODO

2014-07-26 18:32:27 8162

原创 算法导论习题解-第16章贪心算法

习题编号以第三版为准。

2014-07-26 16:50:16 18917

原创 算法导论习题解-第15章动态规划

#a is topological sorted, a[0] is s, a[-1] is tdef longest(a): #d[i] is the longest distance from a[0] to a[i] d = [-INF]*len(a) d[0] = 0 for i in range(1, len(a)): for j in range(i

2014-06-13 16:11:37 10610 1

原创 算法导论之最长递增子序列

习题15.4-5,15.4-6长度为n的shu'z

2014-06-11 20:47:12 766

原创 算法导论笔记(1)

习题5.3-5 从n^3个数字中进行放回抽样,共抽nci

2014-05-14 18:09:16 712

原创 算法导论习题4-5:芯片检测

2019.11.14更新: 修正了方法1里的一个错误,增加了方法3。习题4-5 3rd edition (4-6 2nd edition)Diogenes 教授有n个被认为是完全相同的VLSI芯片,原则上它们是可以互相测试的。教授的测试装置一次可测试二片,当该装置中放有两片芯片时,每一片就对另一片作测试并报告其好坏。一个好的芯片总能够正确的报告另一片的好坏,但一个坏的芯片的结果就是不可靠的...

2014-05-13 22:32:20 4135

原创 整数开平方

如何判断一个数是不是完全平方数?最简单的方法是通过下面的代码:isSquare(int n) { int x = (int)Math.sqrt(n); return x*x == n;}可能有人会担心,Math.sqrt是浮点运算,会不会由于精度的问题,造成x与实际值不等?比如开方应得2,但是实际得到1.9999999,取整后只得到1。这个担心是完全没有必要的。java

2009-09-04 00:03:00 1239

原创 java多线程练习

程序描述:窗口程序,有一个按钮,当按下时会随机在面板的某个位置生成一个颜色随机的方块,在三秒钟之后该方块消失。实现:用一个list来保存各个方块的位置。每次添加一个方块的时候,在一个单独的线程里等待3秒钟,然后把该方块从list里删除,在等待开始的时候和结束的时候重绘面板。需要对list进行同步。 代码:import java.awt.BorderLayout;import j

2009-04-11 17:12:00 775

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除