西代零零发

既然选择远方,便只顾风雨兼程

Leetcode分类解析:二分查找

Leetcode分类解析:二分查找1.原始二分查找1.1 典型例题35-Search Insert Position (Medium): Given a sorted array and a target value, return the index if the target is found...

2016-08-14 09:04:25

阅读数 4204

评论数 4

Leetcode分类解析:链表

Leetcode分类解析:链表1.分类地图按照惯例,首先来看一下链表在本系列所处的位置: 基础结构(Fundamentals) 1.1 数组和链表(Array&List):插入、删除、旋转等操作。 1.2 栈和队列(Stack&Queue):栈的典型应用。 1.3 树(Tre...

2016-08-13 08:28:14

阅读数 3571

评论数 2

Leetcode分类解析:组合算法

Leetcode分类解析:组合算法所谓组合算法就是指:在解决一些算法问题时,需要产生输入数据的各种组合、排列、子集、分区等等,然后逐一确认每种是不是我们要的解。从广义上来说,组合算法可以包罗万象,甚至排序、各种搜索算法都可以算进去。最近读《The Algorithm Design Manual》时...

2016-07-04 23:47:17

阅读数 6408

评论数 3

关于算法,那些你不知道的事

关于算法,那些你不知道的事1.算法,不止于刷题提到算法,不管是科班出身还是半路出家的程序员可能都会说上几句,算法谁没学过谁不知道啊?对于走工业界路线而非学术路线的同学来说,算法学习的最大作用也许是找工作…… 毕竟工作后,绝大多数时候都用各种成熟的类库,少有自己实现高级数据结构和算法的时候。但刚结束...

2016-06-20 23:41:44

阅读数 10217

评论数 6

Leetcode算法题分类解析:(一)总览

Leetcode算法题分类解析:(一)总览1.为何/如何刷题1.1 必要性刷题刷题,从“刷”字就能看出其中的机械性和应试性,但这就是几乎所有IT公司面试中的一环。尽管面试者可能也对这种考察方式不是很满意,可在没有更好的方式之前,这个现状会一直保持下去。我们改变不了这个现状,那就适应它吧。1.2 分...

2016-06-17 23:01:03

阅读数 9249

评论数 3

算法学习的新阶段

算法学习的新阶段最近忙得一塌糊涂,所以根本没时间总结整理学习成果了。之前刚开学不太忙时写了几篇都没写完,因为发现面前开启了一道道大门,想系统整理的东西太多了。于是时隔快两个月,先发一篇以作记录,系统整理只能等到暑假开始时了……1.基本数据结构一开始接触到算法是在大学,具体有什么用也不清楚。但老师一...

2016-04-10 06:48:55

阅读数 4506

评论数 2

六星经典CSAPP-笔记(10)系统IO

六星经典CSAPP-笔记(10)系统I/O1.Unix I/O所有语言的运行时系统都提供了高抽象层次的I/O操作函数。例如,ANSI C在标准I/O库中提供了诸如printf和scanf等I/O缓冲功能的函数;C++中则重载了<<和>>用来支持读写。在Unix系统中,这些高...

2015-05-16 22:40:06

阅读数 2620

评论数 0

Leetcode难度表及解题汇总

Leetcode难度表及解题汇总参考网上一份题目难度表,以及本人的解题。 Id Question Difficulty Frequency Data Structures Algorithms Blog Comment 1 Two Sum 2 5 ...

2015-05-08 22:08:21

阅读数 3397

评论数 0

Antlr v4入门教程和实例

1 重逢ANTLR最早知道ANTLR是当年学习Apache Derby数据库源码时,在看到SQL解析那一层时,第一次看到编译原理在实际项目中的应用,惊叹之余也只能望而却步。之前也根据网上一些资料尝试了一下,看介绍说ANTLR v4更加易用了,于是又好奇地试用一下。以下入门介绍主要参考ANTLR作者...

2015-04-30 21:30:05

阅读数 47914

评论数 5

程序员修炼之路-(4)搜索(中):二叉查找树

2 查找:鱼与熊掌前面已经介绍了线程查找和二分查找的符号表(symbol table)实现,但现代应用的特点是查找与插入或删除操作交叉在一起,无法预测,并且表非常巨大。因此问题的关键就是我们能否设计出具有对数性能的search和insert/delete操作的数据结构和算法?为了实现高效的插入,我...

2015-04-12 09:45:39

阅读数 2934

评论数 0

程序员修炼之路-(2)线性表(下):栈、队列

2 基础数据结构数组和链表是实现各种数据结构的基石,本节中的三种最基本的数据结构都可以用数组或者链表来实现。2.1 栈用数组实现“栈”非常简单。下面以C++为例,实现一个简单的固定大小的“栈”。首先,接口API定义如下,核心函数就是push()和pop():2.1.1 数组实现下面用数组方式的实现...

2015-03-31 21:24:41

阅读数 1966

评论数 0

程序员修炼之路-(2)线性表(上):数组与链表

1 两块基石数组与链表构成各种数据结构的基石,是实现所有数据结构必不可少的元素。1.1 数组数组一般内置于编程语言中,直接通过索引(index)读写。索引一般为数字,有的语言甚至直接支持如字符串等其他类型的索引。在很多数据结构中都能看到数组的身影,例如字符串、动态数组、堆、栈和队列(用链表也可以,...

2015-03-31 21:18:22

阅读数 2121

评论数 2

程序员修炼之路-(3)排序(上):基本排序

1 基本排序对于所有排序算法,被排序元素需要满足下列数学性质:Ø  自反性(reflextive):for all v,v=vØ  对称性(antisymmetric):for all v and w,if vv and if v=w then w=vØ  传递性(transitive):for ...

2015-03-31 21:09:49

阅读数 2004

评论数 0

程序员修炼之路

前言:《程序员修炼之路-(0)前言:在路上, 再上路》在前言中已经对知识体系进行了梳理,主要分为问题定义、算法与数据结构、系统平台API、编程语言实现、代码设计、测试验证等等。目前集中精力编写算法与数据结构部分,这可能也是最艰难的一部分,之后再考虑补充其他部分。对于这一部分的内容编排,主要以《算法...

2015-03-31 20:48:26

阅读数 4015

评论数 0

程序员修炼之路-(1)基础(下):正确性证明

来自《Writing Solid Code》的一则小故事,Donald Knuth在其著名的排版软件TEX的封面上写到:“I believe that the final bug in TEX was discovered and removed on November 27, 1985. But...

2015-03-31 20:44:19

阅读数 10373

评论数 7

程序员修炼之路-(1)基础(中):性能分析

3 算法分析“分析”二字的含义很广泛,在算法分析的领域,指的就是算法的效率,包括运行时间效率(时间复杂度)和内存空间使用效率(空间复杂度)两方面。同时,研究表明,通常时间方面比空间能取得更大的进展,因此我们进一步将分析的重点放在时间复杂度上。3.1 算法分析 - 科学实验方法科学家用来理解自然世界...

2015-03-31 20:39:32

阅读数 2717

评论数 0

Leetcode解题-链表(2.2.6)RotateList

1 题目:Rotate ListGiven a list, rotate the list to the right by k places, where k is non-negative.For example:Given 1->2->3->4->5->nullp...

2015-03-28 11:27:33

阅读数 1655

评论数 0

Leetcode解题-树(5.0.0)基础类

与第二章类似,LeetCode指定了TreeNode实现。为了方便后续习题的编写和测试,创建一个基础父类,包含TreeNode实现,以及create()和print()创建和打印树的方法。其中create()采用类似“堆”的方式,用数组表示树形结构,复习一下,左右子结点就是2*i和2*i+1。而p...

2015-03-28 11:25:09

阅读数 1774

评论数 0

Leetcode解题-链表(2.2.3)PartitionList

题目:2.2.3 Partition ListGiven a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. ...

2015-03-28 11:21:07

阅读数 1743

评论数 0

Leetcode解题-链表(2.2.2)ReverseLinkedList

题目:2.2.2 Reverse Linked List IIReverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5...

2015-03-28 11:17:21

阅读数 2253

评论数 0

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