
数据结构
文章平均质量分 74
coderhuhy
To Be a Real Coder.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表指针新理解以及插入里链表节点新方法
自立志开始学习编程开始已经有一周左右,作为一个freshman和greenhead,不得不说对指针的理解还不是很好,特别在学习链表时对链表指针的思考也让我相当有收获。在我看来,数据结构教科书上对链表的描述总是把指针作为前一节点的成员,但有时从原理上来理解反而有些困难。后来发现另一种理解也能适用于各种情形。大致如下:认为p指针既为p节点,p->val为p节点的值,而淡化p指针为前一节点的成员这个原创 2014-10-29 13:24:26 · 1977 阅读 · 0 评论 -
Leetcode210-Course Schedule II
我的新博客地址:Hu Haoyu’s Blog,欢迎参观!共有n节课程,课程编号从0至n-1。一些课程可能有先修要求,比如修0号课程前需要先修1号课程,表示为[0,1]。题目给出课程数和先后修课程对,要求返回完成所有课程的顺序。可能有很多正确的上课顺序,你只需返回其中一种。如果不可能完成,则返回空数组。原创 2015-05-15 00:30:24 · 661 阅读 · 0 评论 -
OpenCV实现图像搜索引擎(Image Search Engine)
OpenCV(Open Source Computer Vision Library)的计算效率很高且能够完成实时任务。OpenCV库由优化的C/C++代码编写而成,能够充分发挥多核处理和硬件加速的优势。OpenCV有大量技术社区和超过900万的下载量,它的使用范围极为广泛,如人机互动、资源检查、拼接地图等。原创 2015-06-20 21:26:53 · 12778 阅读 · 14 评论 -
Leetcode213-House Robber II
After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all houses at this place are arranged in a circle.原创 2015-05-22 11:16:30 · 450 阅读 · 0 评论 -
Leetcode212-Word Search II
Each word must be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once in a word.原创 2015-05-22 10:44:59 · 854 阅读 · 0 评论 -
Leetcode211 - Add and Search Word - Data structure design
我的新博客地址:HuHaoyu's Blog,最近新增了Jekyll的paginator分页功能和Swiftype的搜索引擎。欢迎参观!原创 2015-05-19 19:55:06 · 702 阅读 · 0 评论 -
建堆O(n)时间复杂度证明
建堆复杂度先考虑满二叉树,计算完全二叉树建堆复杂度基本相同。对满二叉树而言,第i层(根为第0层)有2^i个节点。由于建堆过程自底向上,以交换作为主要操作,因此第i层任意节点在最不利情况下,需要经过(n-i)次交换操作才能完成以该节点为堆根节点的建堆过程。原创 2015-07-10 16:31:55 · 2054 阅读 · 0 评论 -
Leetcode220-Contains Duplicate III
Given an array of integers, find out whether there are two distinct indices i and j in the array such that the difference between nums[i] and nums[j] is at most t and the difference between i and j is at most k原创 2015-06-12 10:56:44 · 653 阅读 · 0 评论 -
大数乘法(Multiply Strings)
大数乘法的算法大数乘法的关键在于如何用字符串来模拟大数乘法。方法有如下几种:模拟普通的手算乘法、利用代数方法优化的乘法、快速傅立叶变换FFT。原创 2015-07-11 21:51:48 · 1104 阅读 · 0 评论 -
Leetcode23-Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.合并k个已排序的链表,并分析时间复杂度。k为可大可小的参数,表示需要合并的链表数目。原创 2015-07-11 01:14:41 · 567 阅读 · 0 评论 -
Leetcode209-Minimum Size Subarray Sum
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, return 0 instead.原创 2015-05-12 22:07:27 · 534 阅读 · 0 评论 -
Leetcode208-Implement Trie (Prefix Tree)
前言我的新博客地址:Hu Haoyu’s Blog,该博客中的博文都已转移到新博客中。欢迎参观!Leetcode新题Implement Trie (Prefix Tree)。原创 2015-05-11 21:44:39 · 452 阅读 · 0 评论 -
二叉树与森林的转换
关键思路:利用递归建立节点完成转换。首先我们观察二叉树的结构,包含第一个孩子,及其兄弟。关键在于:那么我们在构造递归时,每层recursion中都必须找到对应sibling和firstchild。对于双亲表示法,我们很难找到孩子,对于孩子表示法,我们很难找到双亲(因为找到双亲是找到本节点兄弟的唯一方法,或在传参时也传入父节点指针)。不同形式间转换的技巧:对于要被转换的结构,需要传入针对原创 2014-11-23 18:00:43 · 830 阅读 · 0 评论 -
链表操作总结-包括链表合并、插入删除、清空复制、逆序
A. 关于有序表合并操作线性结构合并操作可以分为两类,一类是顺序表(顺序存储),另一类是链表(链式存储),二者在有序表合并时的操作并不完全相同。详细分析如下:①顺序表:由于顺序表属于顺序存储结构,当需要插入或删除表中元素时需要移动该位置后续的各元素,所以按通常方法,应开辟一个临时的存储表,用于存放合并后的数据。如不开辟一个临时的顺序表用于存储合并后的内容,则需在每次插入时移动后续元原创 2014-11-03 18:55:13 · 1487 阅读 · 0 评论 -
AC自动机模板及对多模式匹配的理解
在接触AC自动机之前, 只仅仅掌握单模式匹配的算法: 比如KMP, BMH等算法; 经过优化后, KMP和BMH都具有线性时间复杂度, 而实际情况下, 一般的匹配问题BMH具有亚线性的表现; 而昨天接触的AC自动机则是一种结合了字典树和KMP的一种算法, 使得在多模式匹配下, 时间复杂度达到O(Σmi + n), 其中n为原串长度, mi为第i个模式串的长度;匹配过程中类似于KMP, 原串不走原创 2015-02-09 15:36:24 · 644 阅读 · 0 评论 -
LeetCode Jump Game && Jump GameII
LeetCode Jump Game && Jump GameII又是每日LeetCode Time, 这里直接解决Jump Game和Jump GameII;先上题目: Jump GameGiven an array of non-negative integers, you are initially positioned at the first index of t原创 2015-02-10 16:15:49 · 542 阅读 · 0 评论 -
记清华LabmU校园极客社面试
今天参加了清华LabmU校园极客社的面试。问题一:如何用两个栈实现一个队列,要求均摊O(1)时间复杂度。问题二:如何实时获得一个栈中元素的最小(大)值。注意不取出,只需知道最值。也就是实现一个随时都能知道栈中最小值的特殊栈。问题三:如何实时获得一个队列中元素的最小(大)值。注意不取出,只需知道最值。也就是实现一个随时都能知道栈中最小值的特殊队列。原创 2015-03-20 22:03:48 · 1372 阅读 · 0 评论 -
左偏树leftistTree和斜堆skewHeap的分析和实现
今天主要分析一下左偏树和斜堆, 这两个数据结构是二叉堆的进化版, 一方面能够实现与二叉堆相同的功能, 代码结构也比较简单; 另一方面它们的合并操作的时间复杂度为O(logn), 而普通二叉堆实现合并操作的时间复杂度为O(n);原创 2015-03-12 16:20:32 · 2475 阅读 · 0 评论 -
A-star算法概述及其在游戏开发中的应用分析
回想起曾学习A*寻径算法时,难以透彻理解其原理和机制,但随着对图和搜索算法的理解愈发深入,近期重拾A-star时发现并没有那么困难。因此对A*算法和A*变种算法进行系统地学习,同时对其在游戏开发中的应用做了更深层次上的了解。A*算法很巧妙地结合了Dijkstra算法和Best-fit算法的优点,一方面通过设定代价函数g(x)来考虑从起始点到当前点的实际代价,另一方面通过设定启发式函数h(x)来考虑从当前点到目的地的估计代价,f(x) = g(x) + h(x)。它是从当前点击中取出f值最小的节点并进行拓展原创 2015-03-22 21:59:07 · 2774 阅读 · 0 评论 -
Leetcode202-Happy Number
Leetcode202-Happy Number(Easy)Write an algorithm to determine if a number is "happy".A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat t原创 2015-04-22 09:22:06 · 923 阅读 · 0 评论 -
Leetcode Course Schedule
Leetcode207 Course Schedule There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1原创 2015-05-09 00:21:07 · 741 阅读 · 0 评论 -
清华大学研读间助手-清华小图Android
捐赠二维码在本页的末尾:D。还在为预定不到文图研读间而愁眉苦脸,每晚熬到零点只为抢到一个研读间才能安心睡觉吗?还在因不知道文图剩余座位为零而白跑一趟,或傻傻苦等吗?总因为赶不上研读间预约时间而承担着违约的风险,最终导致一个月无法预订研读间吗?不用怕,不担心,清华小图来帮你:D!清华小图的简介清华小图是一款面向全清华的师生的文科图书馆研读间智能预约助手。小图会为你提供全方位的文图研读间预订服原创 2015-12-22 21:40:47 · 3957 阅读 · 1 评论