
算法与数据结构
文章平均质量分 66
ObserverX
平凡而不平庸追求卓越
展开
-
二分搜索
问题描述:二分搜索用以确定一个已经排序的数组X[N]中是否包含元素t,若包含,则返回下标p,其中X[p] = t,否则返回-1. 假设该数组为递增数组,N ≥ 0,X[0] ≤ x[1] ≤ x[2] ≤ ... ≤ x[N-1]. 补充:二分搜索的算法并不复杂,但是写一个完全正确的二分搜索并不简单。Knuth在其The Art of Computer原创 2013-09-11 13:27:02 · 624 阅读 · 0 评论 -
【编程之美】2.16 求数组中最长递增子序列
问题描述: 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度。 例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长递增子序列的长度为4(如1,2,4,6)。 问题分析: 该问题满足“无后效性”,可以用动态规划来解决。 设原数组为array[N],假设LIS[i]代表以array[i]为最大元素的最长递增子序列的长度。 那么LIS[i+1] 如何转载 2013-09-11 18:19:30 · 676 阅读 · 0 评论 -
@庞果网 字符串消除
题目描述: 给定一个字符串,仅由a,b,c 3种小写字母组成。当出现连续两个不同的字母时,你可以用另外一个字母替换它,如 有ab或ba连续出现,你把它们替换为字母c; 有ac或ca连续出现时,你可以把它们替换为字母b; 有bc或cb 连续出现时,你可以把它们替换为字母a。 你可以不断反复按照这个规则进行替换,你的目标是使得最终结果所得到的字符串尽可能短,求最终结果的最短长度。 输入:字符串。长原创 2013-09-11 22:48:52 · 685 阅读 · 1 评论