
algorithm
文章平均质量分 86
小村长
大学在校研究生一枚,关注方向:计算机视觉,数据结构,C希望和大家交流,共同提高
微博:http://weibo.com/u/2653613245 欢迎交流!
展开
-
leetCode 101/199-Symmetric Tree/Binary Tree Right Side View
链接:https://leetcode.com/problems/symmetric-tree/此题就是判断一棵二叉树是否为对称二叉树,刚开始以为中序遍历输出,然后看是否是为回文字串,但是这种思路是错了,如[1,2,3,#,3,#,2].代码如下:通过循环递归判断左孩子的左子树与右孩子的右子树 及 左孩子的右子树与右孩子的左子树即可得到结果。class Solution {pub原创 2015-04-02 18:40:13 · 1252 阅读 · 0 评论 -
逆序数的几种求法
逆序数就是指比如:数组A={2,4,3,5}那么就是一个逆序数。一:暴力匹配对于数组A中的元素,i从0到n-1,j从i+1到n, 判断每一个是否为逆序数,时间复杂度O(lgN)。太简单了,没写代码了。。。。。二:归并归并排序能解决逆序数主要在于:比如归并A1={2,4,5}, A2={1,3},进行归并的时候,我们每次判断A1和A2中元素大小,这里有两种思路:(1)当A1[i] ,原创 2015-04-01 21:20:30 · 5055 阅读 · 0 评论 -
leetcode ----Trie/stack专题
一:Implement Trie (Prefix Tree)题目:Implement a trie with insert, search, and startsWith methods.Note:You may assume that all inputs are consist of lowercase letters a-z.分析:此题是典型的trie树,原创 2015-06-05 21:51:13 · 1787 阅读 · 0 评论 -
LeetCode 62/63/120/64 Unique PathsI/II Triangle/Min sum Path/Rectangle Area--DP
一:unique Path题目:A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot i原创 2015-04-06 15:49:37 · 1362 阅读 · 0 评论 -
leetcode 专题—sort
此将主要将leetcode中sort专题的解答都放在这里,后续会慢慢加入一:leetcode179 Largest Number题目:Given a list of non negative integers, arrange them such that they form the largest number.For example, given [3, 30, 3原创 2015-05-06 19:26:34 · 1997 阅读 · 1 评论 -
leetcode LinkList专题
此次blog会将leetcode上的linklist专题内容放在这里,后续慢慢添加一:leetcode 206 Reverse Linked List 二:leetcode 92 Reverse Linked List II一:leetcode 206 Reverse Linked List题目:Reverse a singly linked list.代码:原创 2015-05-06 16:09:34 · 1137 阅读 · 0 评论 -
leetcode 204/187/205 Count Primes/Repeated DNA Sequences/Isomorphic Strings
一:leetcode 204 Count Primes题目:Description:Count the number of prime numbers less than a non-negative number, n分析:此题的算法源码可以参看这里,http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes代码:cl原创 2015-05-06 14:27:00 · 1616 阅读 · 0 评论 -
leetCode191/201/202/136 -Number of 1 Bits/Bitwise AND of Numbers Range/Happy Number/Single Number
链接:https://leetcode.com/problems/number-of-1-bits/此题关键是如何判断一个数字的第i为是否为0 即: x& (1class Solution {public: int hammingWeight(uint32_t n) { int count = 0; for(int i = 0; i < 32;原创 2015-04-01 18:32:00 · 1790 阅读 · 0 评论 -
LeetCode 53/152 Maximum Subarray/Maximum Product Subarray---DP **
题目:Maximum SubarrayFind the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguo原创 2015-04-09 16:57:42 · 2014 阅读 · 0 评论 -
LeetCode89/60 Gray Code/Permutation Sequence--迭代
一:Leetcode 89 Gray Code题目:The gray code is a binary numeral system where two successive values differ in only one bit.Given a non-negative integer n representing the total number of bits in原创 2015-04-20 14:51:40 · 1609 阅读 · 0 评论 -
LeetCode41/19 First Missing Positive/Remove Nth Node From End of List ****
leetcode41 First Missing Positive题目:Given an unsorted integer array, find the first missing positive integer.For example,Given [1,2,0] return 3,and [3,4,-1,1] return 2.Your algorit原创 2015-04-12 22:04:13 · 1208 阅读 · 0 评论 -
LeetCode48/189 Rotate Image/Rotate Array
一:Rotate Image题目:You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Follow up:Could you do this in-place?链接:https://leetcode.com/prob原创 2015-04-08 18:28:53 · 1135 阅读 · 0 评论 -
leetcode ---双指针+滑动窗口
一: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-06-06 16:26:19 · 4594 阅读 · 0 评论 -
算法系列笔记9(字符串匹配)
字符串匹配指有一个文本串S和一个模式串P,现在要查找P在S中的位置。主要有以下算法:其中朴素算法和KMP算法我们在这边bloghttp://blog.youkuaiyun.com/lu597203933/article/details/41124815中已经讲解过。RP算法时间复杂度较高,我也没看,想看可以看算法导论。这里主要讲解有限自动机的字符串匹配算法。有限自动机的定义:原创 2015-03-13 20:00:17 · 1139 阅读 · 0 评论 -
0-1背包问题及变种
0-1背包问题: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 这个问题的特点是:每种物品只有一件,可以选择放或者不放。算法基本思想: 利用动态规划思想 ,子问题为:f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。原创 2014-09-09 21:07:30 · 4213 阅读 · 0 评论 -
LeetCode 8题 --Array+Binary search**
这5道题都是array的binary search就可以搞定了分别是leetcode(35)——Search Insert Position leetcode(33)——Search in Rotated Sorted Array leetcode(81)——Search in Rotated Sorted Array II leetcode(34)——Search fo原创 2015-04-07 14:49:43 · 1165 阅读 · 0 评论 -
算法系列笔记1(排序)
本次主要记录一些经典的排序算法,其中包括冒泡排序、直接选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序、桶排序以及计数排序和基数排序。首先会给出这些排序算法的基本思想,然后给出实现的代码,最后会给出其时间复杂度。1:冒泡排序思想:(1):比较相邻的前后两个元素,如果后面的数据小于前面的数据,则交换这两个数据的位置。这样经过一次遍历,最小的元素将在第0个位置,属于”冒泡”.(原创 2015-01-29 17:07:27 · 1649 阅读 · 1 评论 -
算法系列笔记6(动态规划—最长公共子序列/串lcs和最长递增子序列(LIS))
子序列要求元素顺序一致就可以了,而字串必须是连续的。如ABCBDAB与BDCABA两个字符串,最长公共子序列有BCBA、BDAB和BCAB, 而最长公共字串只有AB和BD。最长公共子序列法一:穷举法 检查字符串x所有字序列,共有2^m个,检查它是否在y字符串中出现,每个需要O(n),时间复杂度为指数级的。法二:动态规划(DP) 将两个字符串x[1…m]和原创 2015-02-06 10:00:36 · 2740 阅读 · 0 评论 -
LeetCode7~9 Reverse Integer/String to Integer (atoi)/Palindrome Number
一:Reverse Integer题目:Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321链接:https://leetcode.com/problems/reverse-integer/分析:这题通过不断取余将余数存放在一个vecto原创 2015-04-05 13:39:58 · 1141 阅读 · 0 评论 -
LeetCode42/11 Trapping Rain Water/Container With Most Water/Hist area**
题目地址:https://leetcode.com/problems/trapping-rain-water/这道题关键点是是两边往中间遍历,记录当前第二高点secHeight,然后利用这个第二高点减去当前历经的柱子,剩下就装水容量了。为什么是第二高点?因为两边比较,最高的点不用动,只移动第二高点。这也是阿里2015实习生招聘附加题第三题class Solution {publi原创 2015-04-03 11:23:26 · 1056 阅读 · 0 评论 -
最长回文子串
回文串指给定的字符串,正着读和反着读都是一样的。如ADA,反过来还是ADA即为回文串。最长回文子串指查找一给定字符串中最长的回文串。通常有以下4种解法。主要考虑的是时间复杂度。1:穷举法穷举所有的子串,找出是回文串的子串,统计出最长的一个。求每一个子串时间复杂度O(N^2),判断子串是不是回文O(N),两者是相乘关系,所以时间复杂度为O(N^3)。代码如下: #includ原创 2015-03-10 21:16:33 · 2270 阅读 · 0 评论 -
算法系列笔记2(静态表顺序统计-随机选择算法和BFPRT算法)
问题:当给定存在静态表(如数组)中的n个元素,如何快速找到其中位数、最小值、最大值、第i小的数? 首先想到的方法是先对数组元素进行排序,然后找到第i小的元素。这样是可行的,但比较排序最快也需要O(nlgn),能否在线性时间内解决呢。这就是随机的分治法—随机选择。思想:利用随机划分(在快速排序中介绍过)找到主元r,这样就将小于等于r的元素放在了其左边,大于r的元素放在了其右边。这原创 2015-02-02 22:17:54 · 1541 阅读 · 0 评论 -
LeetCode121/122/123/188 Best Time to Buy and Sell Stock<股票> I/II/III/IIII----DP+Greedy**
一:LeetCode 121 Best Time to Buy and Sell Stock题目:Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one t原创 2015-04-11 20:30:13 · 2249 阅读 · 0 评论 -
LeetCode 55/45 Jump Game I/II-----Greedy**
一:Jump Game题目:Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that posi原创 2015-04-10 12:30:45 · 1344 阅读 · 0 评论 -
KMP算法笔记
Kmp算法我是看July博客学习,这里只是做个笔记,详细内容见July的blog: http://blog.youkuaiyun.com/v_july_v/article/details/7041827Kmp算法的用途:有一个文本串S和一个模式串P,现在要查找P在S中的位置。暴力匹配算法需要对文本串S进行回溯,kmp算法就是让文本串不回退,只需要移动模式串j即可。 Kmp算法大体思想:就是当s原创 2014-11-14 21:42:09 · 2256 阅读 · 0 评论 -
LeetCode26/27/80/75 Remove Duplicates from Sorted Array I and II/Remove Element/Set Colors**
题目:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in pla原创 2015-04-05 20:38:14 · 1199 阅读 · 0 评论 -
LeetCode73 Set Matrix Zeroes**
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.Follow up:Did you use extra space?A straight forward solution using O(mn) space is probably a b转载 2015-04-07 09:19:38 · 1630 阅读 · 0 评论 -
LeetCode 105/106 Construct Binary Tree from Preorder/Postorder and Inorder Traversal
一:LeetCode 105 Construct Binary Tree from Preorder and Inorder Traversal题目:Given preorder and inorder traversal of a tree, construct the binary tree.Note:You may assume that duplicates d原创 2015-04-12 13:59:02 · 1487 阅读 · 0 评论 -
算法练习系列—hiho1039 字符消除
题目地址:http://hihocoder.com/problemset/problem/1039时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的子串拼成新的字符串原创 2015-03-13 20:24:23 · 7130 阅读 · 6 评论 -
Trie树
定义:又称字典树或单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 性质:它有3个基本性质:(1)根节点不包含字符,除根节点外每一个节点都只包含一个字符; (2)从根节原创 2015-03-12 21:16:22 · 1479 阅读 · 0 评论 -
B树
概念:B树就是一种数据结构,是为磁盘或者其它直接存取的辅助存储设备而设计的一种平衡查找树。许多数据库系统都是采用B树或者B树的变形来存储信息。磁盘的结构:定位一个磁盘中的数据,一般由柱面(磁道组成的圆柱)、盘面和盘块号三部分组成,通常cpu都是以盘块大小为基本单位进行读取的,盘块的大小一般为几KB.故而在磁盘中读取数据所消耗的时间主要就由查找磁道(查找时间)和等待时间(盘块号旋转到磁头下)的时原创 2015-03-29 21:50:52 · 1475 阅读 · 0 评论 -
算法系列笔记7(有关图的算法一—搜索,拓扑排序和强连通分支)
简单概念:对于图G(V,E),通常有两种存储的数据结构,一种是邻接矩阵,此时所需要的存储空间为O(V^2);第二种是邻接表,所需要的存储空间为O(V+E)。邻接表表示法存在很强的适应性,但是也有潜在的不足,当要快速的确定图中边(u,v)是否存在,只能在顶点u的邻接表中搜索v,没有更快的方法,此时就可以使用邻接矩阵,但要以占用更多的存储空间作为代价;此外当图不是加权的,采用邻接矩阵存储还有一个优势:原创 2015-03-05 21:15:00 · 2253 阅读 · 0 评论 -
算法系列笔记8(有关图的算法二—最短路径问题)
图的最短路径问题主要分为两类,单源最短路径问题和全对最短路径问题。单源最短路径问题指给点单个源点,求其到所有其它顶点之间的最短距离。而全对最短路径问题指所有顶点之间的最短路劲问题。此外对于单对最短路径问题,从渐进意义上来看,目前还没有比最好的单元算法更快的算法来解决这一问题。一:单源最短路径问题单源最短路劲问题根据其权重分为四类,当图G=(V,E)为无权图,直接使用广度优先遍历(这里不做介原创 2015-03-07 21:14:18 · 2570 阅读 · 0 评论 -
算法练习系列—hiho1048 状态压缩一(铺地砖)
题目地址:http://hihocoder.com/problemset/problem/1048编程之美的课后题也有一个和整个题目一样的。(P269) 题目这个题目的题意很容易理解,在一个N*M的格子里,我们现在有两种类型的砖块,1 * 2和 2 * 1,问一共有多少种方案,可以将整个N*M的空间都填满。最简单的例子就是下面的了:编程之美中题目:某年夏天,位于原创 2015-03-08 21:07:38 · 5821 阅读 · 1 评论 -
Kd-Tree算法原理和开源实现代码
本文介绍一种用于高维空间中的快速最近邻和近似最近邻查找技术——Kd-Tree(Kd树)。Kd-Tree,即K-dimensional tree,是一种高维索引树形数据结构,常用于在大规模的高维数据空间进行最近邻查找(Nearest Neighbor)和近似最近邻查找(Approximate Nearest Neighbor),例如图像检索和识别中的高维图像特征向量的K近邻查找与匹配。本文首先介转载 2015-03-25 21:15:09 · 1564 阅读 · 0 评论 -
算法系列笔记10(有关图的算法三—最大流与二分图)
本次主要记录流网络以及最大流的简单概念(以后可能会将最大流的实现算法补充),重点讲解用匈牙利算法来求二分图的最大匹配。1:流网络流网络是G(V, E)是一个有限的有向图,它的每条边(u, v)∈E都有一个非负值实数的容量c(u, v)≥0。如果(u, v) 不属于E,我们假设c(u, v) = 0。我们区别两个顶点:一个源点s和一个汇点t.。并假定每个顶点均处于从源点到汇点的某条路原创 2015-03-15 20:59:09 · 3846 阅读 · 0 评论 -
算法练习系列—hiho1122二分图最大匹配之匈牙利算法
题目地址:http://hihocoder.com/problemset/problem/1122该题目的关键是2个问题:1点用bfs构造二分图 2:针对二分图的其中S中的结点,遍历找增广路(匈牙利算法求二分图的最大匹配)每找到一条增广路就多找到了一条匹配。代码如下:/*这题有两点需要注意:1点用bfs构造二分图 2:针对二分图的其中S中的结点,遍历找增广路(匈牙利原创 2015-03-15 21:21:00 · 1440 阅读 · 0 评论 -
算法系列笔记4(红黑树)
随机构建的二叉查找树的高度期望值为O(lgn),并不代表所有的二叉查找树的高度都为O(lgn)。但是对于有些二叉查找树的变形来说,动态集合各基本操作的性能却总是很好的,如红黑树、B树、平衡二叉树(AVL树)、跳跃表(确切的说不是树,或多或少有树的结构)、treaps(树堆)等。这里我们讲解红黑树。 平衡的意思就是完成动态数据集的操作(minimum、maximum、search、p原创 2015-02-03 21:32:54 · 1669 阅读 · 1 评论 -
算法系列笔记5(扩展数据结构-动态顺序统计和区间树)
在编程中,我们往往使用已有的数据结构无法解决问题,这是不必要急着创建新的数据结构,而是在已有数据结构的基础上添加新的字段。本节在上一次笔记红黑树这一基础数据结构上进行扩展,得出两个重要的应用—动态顺序统计和区间树。动态顺序统计 在算法系列笔记2中我们在线性时间内完成了静态表的顺序统计,而这里我们在红黑树上进行扩展,在O(lgn)时间内完成该操作,主要包括返回第i排名的元素o原创 2015-02-03 22:20:29 · 2028 阅读 · 0 评论 -
leetCode 190-Reverse Bits
链接: https://leetcode.com/problems/reverse-bits/此题的关键是预先将1class Solution {public: Solution(){ unsigned int i = 0; unsigned int j = 1; for(; i < 32; i++) a[i] = (j<<(31-i)); }原创 2015-04-01 19:11:40 · 1710 阅读 · 0 评论