算法
文章平均质量分 55
kingbird_Wang
努力奋斗中...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
输出n对括号的所有有效(左右括号成对匹配)排列
原题:Implement an algorithm to print all valid (e.g., properly opened and closed) combinations of n-pairs of parentheses.EXAMPLE:input: 3 (e.g., 3 pairs of parentheses)output: ()()(), ()(()), (())原创 2012-12-26 16:38:58 · 2426 阅读 · 0 评论 -
Anagrams 变位词
本文要讨论的是变位词,也就是说通过交换一个单词的各个字母的顺序能变成另一个单词,那么这两个单词互为变位词。问题一:判断给定的两个单词(标准ASCII)是否变位词方法一:用两个数组分别统计两个字符串里每个字符出现的个数,如果完全一致,则是变位词,否则不是.这个方法是大小写敏感的。这个方法能支持的输入字符串的最大长度 将受 用来统计字符个数的数组的类型 的限制。如果用unsigned ch原创 2013-01-09 15:40:52 · 1421 阅读 · 0 评论 -
二维数组中的查找 Cracking the coding interview 9.6
Cracking the coding interview 9.6Given a matrix in which each row and each column is sorted. write a method to find an element in it. 实现一个函数,在一个行列都排序的二维数组中查找某个元素是否存在。思路:如果待搜索元素小于一行中最左边的元素或者大于一行中最原创 2013-01-10 14:49:07 · 956 阅读 · 0 评论 -
输入一个整数数组,返回所有元素两两之差绝对值最小的值,O(n)算法
输入一个整数数组,返回所有元素两两之差绝对值最小的值(只要得出最 小值即可,不需要求出是哪两个数)。两两之差的绝对值的最小值,也就是在找所有元素中离得最近的两个元素的距离。我有一个O(n)的算法,用空间换来的。方法如下:申请一个长度为UINT_MAX的bool型数组isExist[],初始值均为false。第一阶段,遍历输入数组,并记录数组的最大值最小值对于ai,将isEx原创 2013-01-30 10:18:35 · 4234 阅读 · 3 评论 -
判断一个二叉树是否是平衡二叉树 Cracking the coding interview 4.1
平衡二叉树的定义是:任意节点的左子树的高度和右子树的高度之差小于等于1.那么一个二叉树是平衡二叉树 当且仅当 (1,左子树是平衡二叉树, 2. 右子树是平衡二叉树; 3, 左右子树的高度之差小于等于1).所以用递归的方法判断的话,递归函数就需要返回两个信息:是否平衡,树高度. 代码如下。bool IsBalance(Node *pRoot, int & nDeepth){ if原创 2013-01-15 17:25:06 · 2001 阅读 · 0 评论 -
排列组合问题汇总
问题一 打印出一个集合中的元素的所有可能的组合.思路如下:元素个数为n,可以用一个n位二进制数的每一个bit对应集合中的每一个元素。任取一个n位二进制数即能够表示对该集合中元素的一种选择方案。规则如下:某bit为1,表示选中该元素,为0表示不选中该元素。则从1,累加到(2^n) - 1,即可得到所有组合方案。程序如下:void combine(const char* str, cons原创 2013-01-18 17:17:25 · 1210 阅读 · 0 评论 -
Excel sheet的列名到列序号的转换
序列 seq=[a,b,…,z,aa,ab,…,az,ba,bb,…,bz,…,za,zb,…,zz,aaa,…]类似于excel的列名从小到大依次排列。任意给一字符串 s=[a-z]+(由a-z字符串组成的任意长度字符串),返回s是序列seq的第几个(0-based)字符串。解法1: 先计算1-based下标,返回时减1。注意,这个方法没考虑越界.unsigned int ColumnT原创 2012-12-14 14:22:36 · 3579 阅读 · 0 评论 -
Rotated array related program. 和旋转数组相关的几个程序
问题一:将一个具有n个元素的数组向右旋转i个位置。EXAMPLE:Input: 将(1, 2, 3, 4, 5, 6, 7, 8, 9)旋转3个位置Output: (7, 8, 9, 1, 2, 3, 4, 5, 6)问题二:(Cracking the coding interview 9.3)Given a sorted array of n integers that原创 2013-01-08 17:36:43 · 10873 阅读 · 0 评论 -
各种路径遍历二维数组
比如蛇形遍历,螺旋形遍历等等。可以将遍历过程想象成一个状态机。当前状态为蛇行方向(上行/下行/左行/右行等等),遇到墙壁时将修改当前状态,走到终点时结束。以蛇形遍历为例,一共有两种状态:上行(↗)和下行(↙)。上行(↗)时检查是否遇到top和right,如果遇到right则下走一步(↓),如果遇到top则右走一步(→),然后将状态改为下行;下行(↙)时检查是否遇到left和bott原创 2016-10-29 17:44:16 · 1847 阅读 · 0 评论
分享