算法
文章平均质量分 57
完美世界xx
Happiness is more than pleasure without pain
展开
-
在二叉查找树中插入节点
容易 在二叉查找树中插入节点查看运行结果 42%通过给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。样例给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \1 4 --> 1 4原创 2015-05-18 19:08:41 · 536 阅读 · 0 评论 -
快排
package com.algorithm;public class Sort {public static void main(String []args){int []a={4,4,5,7,1,8,3,9,11,6};qsort(a,0,a.length-1);for(int i=0;i<a.length;i++)System.out.println(a[i]);}priva原创 2015-04-01 13:17:30 · 633 阅读 · 0 评论 -
最长递增子序列
(1) 最长公共子序列法:排序后与原数组的最长公共子序列。(2) 动态规划法:(时间复杂度O(N^2))设长度为N的数组为{a0,a1, a2, ...an-1),则假定以aj结尾的数组序列的最长递增子序列长度为L(j),则L(j)={ max{1,L(i)+1}, i例如给定的数组为{5,6,7,1,2,8},则L(0)=1, L(1)=2, L(2)=3, L(3)=1,转载 2015-05-08 20:43:32 · 313 阅读 · 0 评论 -
在O(n)时间复杂度O(1)空间复杂度求一个数组中出现多次和未出现的数字
爱奇艺笔试题:原题是:已知一个数组A[],大小为N,其中每个数都为1~N,请求出该数组中未出现的数字和出现多次的数字。要求是时间复杂度为O(N),空间复杂度为O(1)这道题的关键点就在于空间复杂度为O(1),本来想到的2-bitmap因为这点也不能实现了。提示是:要善于利用%操作符void appears(int r[], int n) {转载 2015-05-08 16:36:23 · 562 阅读 · 0 评论 -
动态规划求最大子段和
for(int i=1;isum+=a[i];if(sum>Max){Max=sum;start=l;end=i;}if(sum<0){sum=0;l=i+1;}原创 2014-09-10 08:46:35 · 413 阅读 · 0 评论 -
深度优先搜索代码模板
void dfs(type input,type result,int step){ if(数据非法)return 0;//数据非法 if(step==input.size()){//收敛条件 将path放入path } if(减枝)return; for(...){//执行所有可能的扩展动作 执行动作,修改path d原创 2015-04-19 15:56:44 · 1102 阅读 · 0 评论 -
动态规划求解0-1背包
package com.algorithm; //动态规划解决01背包问题 /* * 测试数据 * 背包最多能装10公斤物品,现有3件物品, * 重量和价值分别为 * 3, 4 * 4, 5 * 5, 6 */ public class Backpack_01 { private static int capacity = 10;//背原创 2015-04-22 08:16:08 · 450 阅读 · 0 评论 -
N皇后
package dfs;public class NQueens { private int n=0; //参数n为几个皇后的数目 private int x[]=new int [8]; //解向量也就是解空间树,存放皇后的列数,注意这里的x[i]中的i表示这个皇后在第i行,x[i]的值表示的是这个皇后在这一行的第几列 private int sum=0;//统计解空间的数量原创 2015-04-22 08:11:29 · 349 阅读 · 0 评论 -
素数环
package Thread;import java.util.Arrays;public class PrimeRing { public static void main(String[] args) { int length = 22; //素数环的长度 int[] b = new int[length]; //一个数组,用来标识第i个数字是否被使用过。转载 2015-04-22 08:18:13 · 425 阅读 · 0 评论 -
输入年月日时分秒,计算下一秒的年月日时分秒
1.名称:时光飞逝2.描述:输入年月日时分秒,计算下一秒的年月日时分秒3.分析:1.定义六个全局变量2.输入时间3.计算下一秒3.1 second加一秒3.2 计算每月对应的天数3.3 计算闰年4.打印4.模块1.输入模块 void input()2.计算下一秒 void nextMinute()3.计算每月对应的天数 int dayMo转载 2015-04-11 12:35:04 · 1653 阅读 · 0 评论 -
基于爬山算法求解TSP问题(JAVA)
一、TSP问题TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。TSP问题是一个组合优化问题。该问题可以被证明转载 2014-09-27 17:22:01 · 744 阅读 · 0 评论 -
模拟退火算法
public Individual solve(final IObjectiveFunction f) { Individual pcur, pnew; Random r =new Random(); pcur = new Individual pnew= new Individual pcur.g = this.nullary.create(原创 2014-10-18 09:41:04 · 361 阅读 · 0 评论 -
回溯法——关于子集树和排列树
当所给问题是从n个元素的集合S中找出满足某种性质的子集时,解空间为子集树。例如:0-1背包问题 当所给问题是从n个元素的集合S中找出满足某种性质的排列时,解空间为排列树。例如:旅行售货员问题 回溯法搜索子集树算法描述为:void backtrack(int t){ if(t>n) output(x); el转载 2014-09-21 16:01:05 · 1248 阅读 · 0 评论 -
最长回文子串
最长回文子串是最初我在网易笔试的时候遇见的,当时天真的把原字符串S倒转过来成为S‘,以为这样就将问题转化成为了求S和S’的最长公共子串的问题,而这个问题是典型的DP问题,我也在前面的文章中介绍了3中解决这个问题的方法。但是非常可惜,后来才知道这个算法是不完善的。那么到底为什么呢?听我慢慢道来。S=“c a b a” 那么 S' = “a b a c”, 这样的情况下 S和 S‘的最长公转载 2015-06-09 12:05:56 · 411 阅读 · 0 评论