
数据结构与算法
往事已遥远
无论你走的多远也走不出我的心;黄昏时的树影拖得再长也拖不出树的根
展开
-
把数组排成最小的数--总结
原文作者的解法不错,我一开始没想到。先贴原文,然后再把我的方法详细说下。 题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。 ============== 以下内容引自原文 ==============================转载 2012-06-30 14:39:06 · 464 阅读 · 0 评论 -
找出字符串中对称的子字符串的最大长度(最长回文)[No. 14]
背景: 所谓对称子字符串,就是这个子字符串要么是以其中一个词对称:比如 “aba”, “abcba”;要么就完全对称:比如"abba", "abccba"。 问题: 给你一个字符串,找出该字符串中对称的子字符串的最大长度。 思路: 首先,我们用字符数组 char[] array 来保持这个字符串,假设现在已经遍历到第 i 个字符,要找出以该字符为“中心”的最长对称字符串,我们需要用另两个转载 2012-06-30 15:27:49 · 801 阅读 · 0 评论 -
二叉树两个结点的最低共同父结点
题目:输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题,这个问题至少有两个变种: 第一变种是二叉树是转载 2012-06-30 15:58:40 · 771 阅读 · 0 评论 -
对称子字符串的最大长度
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。 要判断一个字符串是不是对称的,不是一件很难的事情。我们可以先得到字符串首尾两个字符,判断是不是相等。如果不相等,那该字符串肯定不是对称转载 2012-06-30 15:19:18 · 471 阅读 · 0 评论 -
java经典位运算实例
1) int型变量循环左移k次,即a=a >16-k (设sizeof(int)=16) (2) int型变量a循环右移k次,即a=a>>k |a (3)整数的平均值 对于两个整数x,y,如果用 (x+y)/2 求平均值,会产生溢出,因为 x+y 可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法: int average(int x, int y转载 2012-09-14 15:38:26 · 667 阅读 · 0 评论