算法
文章平均质量分 80
Pluser
iStudy, iSport, iMusic, iLife ^_^
展开
-
一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
思路:先从index=0处搜索,每检查一颗珠子,响应的颜色数量+1,如果是新的颜色则总颜色数+1. 当颜色总数为n时,找到第一个满足条件的连续序列。 1>从该序列起始处搜索,若搜索处的颜色数量不为1,则表明该串还有别的珠子有该颜色,继续往前搜索并更新该序列,起始索引位置+1.转载 2012-12-15 22:18:38 · 5276 阅读 · 1 评论 -
Door in wall
1. 你面对一堵左右无限延伸的墙; 2. 该墙有且只有1扇门,它在离你 n 步远的地方; 3. 你不知道 n 的大小,也不知道门在你左边还是右边; 4. 你一次能够向左或者向右走一步,你只有走到门所在的位置才能出去。 请设计一个O(n)的算法,找到这扇门。 算法思路如下: 按一下顺序走: 先向左走1步,再向右走2步,再向左走4步....每次改变方向,且 每次原创 2012-02-24 18:37:19 · 908 阅读 · 0 评论 -
并查集
1、 概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 2、 基本操作 并查集是一种非常简单的数据结构,它主要涉及两个基本操作,分别为: A. 合并两个不相交集合 B. 判断两个元素是否属于同一个集合 (1) 合并两个不相交集合(Union(x,y))转载 2012-10-22 20:36:18 · 609 阅读 · 0 评论 -
01背包、完全背包、多重背包、混合三种背包问题
P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是: f[i][v]=max{f[i-1][v],f转载 2012-03-20 20:20:13 · 1125 阅读 · 0 评论