Algorithm
songxueyu
这个作者很懒,什么都没留下…
展开
-
LeetCode OJ——Single Number
Single Number Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you im原创 2013-10-07 16:34:42 · 1115 阅读 · 0 评论 -
LeetCode——复制图
http://articles.leetcode.com/2012/05/clone-graph-part-i.htmlBFS方法遍历图。为了防止重复遍历,使用hashmap,key为原图的node,value为新图的node。我没有看原文的算法实现先是自己想了然后写上去。这样的过程中我碰到了一些问题。比如说什么时候创建新的节点?是在while的开始,还是在遍历相邻节点的时候?这点很重原创 2015-07-24 13:49:36 · 456 阅读 · 0 评论 -
算法——找单链表中点
超级简单,做个记录。设两个指针,一个每次走两步,一个每次走一步,到头了就是中点。类似与找单链表倒数第几个元素这样到算法。实现如下:package com.song.algorithm;public class FindMid { public static class Node{ Node next; String data; public Node(String原创 2015-07-23 15:05:46 · 2371 阅读 · 0 评论 -
算法导论——分治法——最大子数组问题
好久没有写博客了。以后我会不定期地写一些算法的博客,分享一些算法的感想。以下的说法很多都是我自己的感想,肯定有很多不足的地方,希望大家指正。今天把算法导论里面分治法这一章里面的第一个问题——最大子数组问题写出来。分治法,分而治之。对于一些问题,如果使用穷举法,时间复杂度可能不能接受,如n平方的时间复杂度。这时候使用分治法的话将会大大减少时间(尤其是在n比较大的情况下)。分有很多种分法,有的原创 2015-07-19 20:37:33 · 6642 阅读 · 0 评论 -
算法导论——第五章概率分析与随机算法笔记
这一章以雇用问题开始。 这个问题可以有如下类比:在一个游戏里面,你身上最多可以装备一把剑,你每次在得到一把新的剑的时候都会和当前装备的剑进行比较,如果比当前的好,那就换上新的剑。但是换剑你需要付金币。假设剑的数量一定并且你在游戏过程中都会碰到,而且每次哪把剑出现是随机的,问你要付金币数的期望。 很显然,付金币的数量决定于剑出现的顺序。一般游戏中都会先出现低级的剑,所以你付的金币数会很多原创 2015-08-10 19:49:56 · 1445 阅读 · 0 评论 -
递归求地铁两站间最短路径
long time no bo 了!文明点!此博非彼bo!记录一个刚刚pfd原创 2014-06-30 16:31:16 · 4437 阅读 · 0 评论 -
组合的生成
/* 组合的生成*/#include#includevoid generate_i(int *c,int n,int r,int *i){ int j; for(j=r;j>=1;j--){ if(c[j]<(n-r+j)){ break; } } *i=j;}void set_cj(int *c,int r,int i){ int j; for(j原创 2013-10-17 09:30:19 · 990 阅读 · 0 评论 -
<转>穿越沙漠
Problem Description一辆吉普车来到 x 公里宽的沙漠边沿 A 点,吉普车的耗油量为 1 升 / 公里,总装油量为 500 升。通常,吉普车必须用自身油箱中的油在沙漠中设置若干个临时储油 点,才能穿越沙漠的。假设在沙漠边沿 A 点有充足的汽油可供使用,那么吉普车从 A 点穿过这片沙漠到达终点 B ,至少要耗多少升油。请编写一个程序,计算最少的 耗油量(精确到小数点后 3 位转载 2014-04-07 20:20:32 · 940 阅读 · 0 评论 -
序数法生成全排列
/* 序数法生成全排列*/#include#include//注意:为了更好理解,a数组的实际长度为n,p数组的实际长度为n+1,a[0]和p[0]弃之不用//生成a1,a2,a3……void generate_a(int *a,int N,int n){ int i; for(i=1;N>0;i++){ a[i]=N%(i+1); N=N/(i+1); } wh原创 2013-10-16 23:10:47 · 3130 阅读 · 0 评论 -
运用Caley定理恢复树
n个有标号1,2,……,n的顶点的树的数目等于n^(n-2)。以下程序由用户输入顶点的数目然后得出所有可能的树并输出到文件里。#include#include//事实上,每次只要获得d序列和f序列的第一个元素就可以了,但是为了更明显地表示出来,还是全部生成了d和f序列//设置数组array为v值,len为数组长度void reset_array(int *array,int原创 2013-10-12 14:13:21 · 800 阅读 · 0 评论 -
字典序法生成全排列
/* 用字典序法生成全排列*/#include#includevoid generate_i(int *p,int n,int *i){ int j=n; while(p[j-1]>=p[j]){ j--; } *i=j;}void generate_j(int *p,int n,int i,int *j){ int k=n; while(p[i-1]>=p[原创 2013-10-16 23:11:57 · 1110 阅读 · 0 评论 -
LeetCode——Divide Two Integers
Divide Two IntegersDivide two integers without using multiplication, division and mod operator.class Solution {public: int divide(int dividend, int divisor) { // Not原创 2013-10-11 23:55:35 · 678 阅读 · 0 评论 -
LeetCode OJ——Gas Station
Gas StationThere are N gas stations along a circular route, where the amount of gas at station i is gas[i].You have a car with an unlimited gas tank and it costs cost[i] of gas to travel f原创 2013-10-08 22:48:38 · 776 阅读 · 0 评论 -
LeetCode OJ——Single Number II
Single Number II Given an array of integers, every element appears three times except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could y原创 2013-10-07 16:36:57 · 1007 阅读 · 0 评论 -
LeetCode OJ——Candy
Candy There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must ha原创 2013-10-07 16:39:50 · 971 阅读 · 0 评论 -
算法导论-最大子数组问题-线性时间复杂度算法分析与实现
之前写了最大子数组问题的分治法,今天把这个问题的线性时间复杂度的算法写出来。这个方法在算法导论最大子数组问题的课后思考题里面提出来了,只是说的不够详细。思考题如下:使用如下思想为最大子数组问题设计一个非递归的,线性时间复杂度的算法。从数组左边界开始,由左至右处理,纪录到目前为止已经处理过的最大子数组。若已知A[1...j]的最大子数组,基于如下性质将解扩展为A[1...j+1]的最大子数组原创 2015-07-23 14:54:48 · 5024 阅读 · 7 评论