算法设计与分析
文章平均质量分 83
欠扁的小篮子
天南地北双飞客,老翅几回寒暑。
展开
-
贪心算法之背包问题
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。 完全背包问题:给定n个物品和一个容量为C的背包,物品i的重量原创 2015-11-13 17:53:18 · 999 阅读 · 0 评论 -
LeetCode-62-Unique Paths
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 is trying to reach the原创 2016-06-23 07:50:46 · 364 阅读 · 0 评论 -
LeetCode-53-Maximum Subarray
Find 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 contiguous subarray [4,−1,2,1] ha原创 2016-06-22 23:29:22 · 262 阅读 · 0 评论 -
LeetCode-9-Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space. 判断一个整数是否是回文数。 思路:求出数字abcd的逆序的数值dcba,如果是回文数的话,那么abcd==dcba。 时间复杂度:O(n) python代码:class Soluti原创 2016-06-22 22:46:41 · 295 阅读 · 0 评论 -
LeetCode-1- Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.Example:Given nums = [原创 2016-06-22 22:45:38 · 275 阅读 · 0 评论 -
LeetCode-70-Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 题意:爬台阶问题。每次能爬一个或两个台阶,问一原创 2016-06-24 23:14:32 · 317 阅读 · 0 评论 -
LeetCode-66-Plus One
Given a non-negative number represented as an array of digits, plus one to the number.The digits are stored such that the most significant digit is at the head of the list. 题意:给定一个由数组表示的数字原创 2016-06-24 22:35:22 · 287 阅读 · 0 评论 -
处理机进程调度模拟
一、进程调度 无论是在批处理还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。进程调度属于处理机调度。 处理机调度分为三个层次:高级调度:(High-Level Scheduling)又称为长程调度、作业调原创 2015-12-27 13:53:02 · 1956 阅读 · 0 评论 -
页面调度算法模拟
模拟实现的算法:FIFO,Optimal(最佳置换),LRU,Clock,改进的Clock算法 一、先入先出(FIFO): 最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内原创 2016-01-23 23:18:50 · 1612 阅读 · 0 评论 -
递归与分治之棋盘覆盖问题
在一个2^k * 2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘。显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘。下图所示的特殊棋盘为 k=2 时 16 个特殊棋盘中的一个。 在棋盘覆盖问题中,要用原创 2015-11-26 13:02:21 · 521 阅读 · 0 评论 -
动态规划之 0-1背包问题及改进
有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。在选择装入背包的物品时,对于每种物品i,只能选择装包或不装包,不能装入多次,也不能部分装入,因此成为0-1背包问题。 形式化描述为:给定n个物品,背包容量C >0,重量 第i件物品的重量w[i]>0, 价值v[i] >0 , 1≤i原创 2015-10-31 22:48:17 · 1629 阅读 · 0 评论 -
动态规划之矩阵连乘
给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。例如: A1={30x35} ; A2={35x15} ;A3={15x5} ;A4={5x10} ;A5={10x20} ;A6={20x25} ;结果为:((A1(A2A3))((A4A5)原创 2015-10-31 10:06:32 · 1331 阅读 · 0 评论 -
动态规划之硬币组合问题
问题:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? 动态规划的本质是将原问题分解为同性质的若干相同子结构,在求解最优值的过程中将子结构的最优值记录到一个表中以避免有时会有大量的重复计算。例如硬币组合问题,若求凑够11元的最少硬币数,可以先从凑够0元、1元、2元……的子结构开始分析。 假设d(i)为凑够i元所需最少硬币数,则原创 2015-10-25 00:45:09 · 5125 阅读 · 0 评论 -
数据结构之链表、栈和队列 java代码实现
定义抽象节点类Node:package cn.wzbrilliant.datastructure;/** * 节点 * @author ice * */public abstract class Node { private Node next; public Node(){ next=null; } public void setNext(Node next原创 2015-08-03 23:30:21 · 681 阅读 · 0 评论 -
动态规划之最长公共子序列(LCS)
最长公共子序列(LCS,Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的。 设X(m)={x(1), x(2), x(3),....,x(m)} 和 Y(n)={y(1), y(2), y(3原创 2015-10-25 23:44:57 · 515 阅读 · 0 评论 -
递归与分治之快速排序
分治法就是把一个大问题分解为多个类型相同的子问题,最后把这些子问题的解合并起来就是问题的解。 快速排序(Quicksort)是对冒泡排序的一种改进,采用了分治的思想。 快排的基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整原创 2015-11-13 22:55:56 · 545 阅读 · 0 评论 -
大数据量下的集合过滤—Bloom Filter
算法背景如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。在响应时间要求比较严格的情况下,如果我们存在内里,那么随着集合中元素的增加,我们需要的存储空间越来越大,以及检索的时间越来越长,导致内存开销...原创 2018-06-23 18:27:41 · 3735 阅读 · 0 评论