算法与数据结构
bylijinnan
这个作者很懒,什么都没留下…
展开
-
二维数组(矩阵)对角线输出
[code="java"]/**二维数组 对角线输出 两个方向例如对于数组:{ 1, 2, 3, 4 }, { 5, 6, 7, 8 },{ 9, 10, 11, 12 }, { 13, 14, 15, 16 },slash方向输出:1 5 2 9 6 3 13 10 7 4 14 11 8 15 12 16 backsl...2014-04-28 17:55:37 · 2652 阅读 · 0 评论 -
编程之美-找符合条件的整数 用字符串来表示大整数避免溢出
[code="java"]import java.util.LinkedList;public class FindInteger { /** * 编程之美 找符合条件的整数 用字符串来表示大整数避免溢出 * 题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0 * * 假设当前正在搜索由0,...2012-07-26 19:26:37 · 136 阅读 · 0 评论 -
编程之美-24点游戏
[code="java"]import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Random;import java.util.Set;public class PointGame {...2012-07-25 19:16:40 · 152 阅读 · 0 评论 -
编程之美-NIM游戏分析-石头总数为奇数时如何保证先动手者必胜
[code="java"]import java.util.Arrays;import java.util.Random;public class Nim { /**编程之美 NIM游戏分析问题:有N块石头和两个玩家A和B,玩家A先将石头随机分成若干堆,然后按照BABA...的顺序不断轮流取石头,能将剩下的石头一次取光的玩家获胜,每次取石头时,每个玩家只...2012-07-23 18:39:46 · 231 阅读 · 0 评论 -
编程之美-高效地安排会议 图着色问题 贪心算法
[code="java"]import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Random;public class GraphColoringProblem { /**编程之美 高效地安排会议 图着色问题 贪心算法 *...2012-07-23 12:06:34 · 302 阅读 · 0 评论 -
java-蓄水池抽样-要求从N个元素中随机的抽取k个元素,其中N无法确定
蓄水池抽样(Reservoir Sampling)相关证明可看这个链接:[url]http://www.cnblogs.com/HappyAngel/archive/2011/02/07/1949762.html[/url]以下为上面这个链接的两个截图:[img]http://dl.iteye.com/upload/attachment/0065/6909/b405ec99-4c8...2012-03-29 15:57:10 · 367 阅读 · 0 评论 -
java-判断一个自然数是否是某个数的平方。当然不能使用开方运算
[code="java"]public class SquareRoot { /** * 题目:判断一个自然数是否是某个数的平方。当然不能使用开方运算 * 方法1.squareRoot0 二分查找 * 方法2.squareRoot1 * 考虑等差数列 1 3 5 7 9...发现 * 1^2=1 * 2^2=1+3 * 3^2=1+3+5...2012-03-28 00:33:51 · 776 阅读 · 0 评论 -
java-求100的阶乘-100!(即100*99*98*...*2*1),不用BigInteger
BigIntegerAddition.add见[url]http://bylijinnan.iteye.com/blog/1463337[/url][code="java"]public class FactorialInAddition { /** *题目:求100的阶乘-100!(即100*99*98*...*2*1) *方法:用加法代替乘法,加法的加数用字...2012-03-27 10:30:53 · 681 阅读 · 0 评论 -
java-编程实现两个正整数的除法,当然不能用除法操作符
[code="java"]public class MyDiv { /** * 题目:编程实现两个正整数的除法,当然不能用除法操作符。 * 方法1:除数不断乘以2,直到最接近被除数 * 方法2:二分查找 * 扩展题目:如何求出a%b的值,要求不能使用除法和求模运算! * 解答:在上面求出商(假设为c)之后,a%b=a-(b*c); */ p...2012-03-25 16:22:26 · 250 阅读 · 0 评论 -
据说是2012年10月人人网校招的一道笔试题-给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 将重物放到天平左侧,问在两边如何添加砝码...
[code="java"]public class ScalesBalance { /** * 题目: * 给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 (假设N无限大,但一种重量的砝码只有一个) * 将重物放到天平左侧,问在两边如何添加砝码使两边平衡 * * 分析: * 三进制 * 我们约定括号表示里面的数是三进...2012-10-28 23:41:33 · 329 阅读 · 0 评论 -
1024! 末尾有多少个0?
[code="java"]public class CountZerosInFactorial { /** * 题目:1024! 末尾有多少个0? * 参看《编程之美》 * 解答: 末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。 是5的倍数的数有: 1024 / 5 = 204个 是...2012-03-23 10:39:45 · 99 阅读 · 0 评论 -
在排序数组中,找出给定数字的出现次数
[code="java"]public class CountTimesInSortedArray { /** * 题目:在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。 * 解法:使用二分查找的方法分别找出给定数字的开始和结束位置,最坏情况下时间复杂度为O(logn) */ public static voi...2012-03-21 23:07:24 · 139 阅读 · 0 评论 -
Java实现-二叉查找树(BST)的操作
see also:[url]http://blog.csdn.net/jiqiren007/article/details/6534810[/url][code="java"]import java.util.LinkedList;import ljn.help.*;public class OperationsOnBinarySearchTree { /** *...2012-03-20 23:58:32 · 171 阅读 · 0 评论 -
编程之美-子数组的最大和(二维)
[code="java"]package beautyOfCoding;import java.util.Arrays;import java.util.Random;public class MaxSubArraySum2 { /** * 编程之美 子数组之和的最大值(二维) */ private static final int ROW = 5;...原创 2012-08-05 23:51:23 · 95 阅读 · 0 评论 -
编程之美-子数组的最大乘积
[code="java"]public class MaxProduct { /** * 编程之美 子数组的最大乘积 * 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。 * 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。 * 但按题目的意思...原创 2012-08-06 00:00:43 · 108 阅读 · 0 评论 -
线段树-poj1177-N个矩形求边长(离散化+扫描线)
[code="java"]package com.ljn.base;import java.util.Arrays;import java.util.Comparator;import java.util.Set;import java.util.TreeSet;/** * POJ 1177 (线段树+离散化+扫描线),题目链接为http://poj.org/pro...2013-01-05 20:34:42 · 208 阅读 · 0 评论 -
线段树-入门
[code="java"]/** * 线段树入门 * 问题:已知线段[2,5] [4,6] [0,7];求点2,4,7分别出现了多少次 * 以下代码建立的线段树用链表来保存,且树的叶子结点类似[i,i] * * 参考链接:http://hi.baidu.com/semluhiigubbqvq/item/be736a33a8864789f4e4ad18 * @a...2013-01-05 20:32:08 · 93 阅读 · 0 评论 -
bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(...
[code="java"]import java.util.Random;/** * 题目: * 给定N(12012-12-27 21:12:57 · 255 阅读 · 0 评论 -
百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序...
[code="java"]import java.util.Arrays;/** * 最早是在陈利人老师的微博看到这道题: * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K * 设计一个排序算法。It should be faster t...2012-12-21 18:17:32 · 254 阅读 · 0 评论 -
有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。写一个函数实现。复杂度是什么。...
[code="java"]import java.util.Random;import java.util.Set;import java.util.TreeSet;/** * http://weibo.com/1915548291/z7HtOF4sx * #面试题#有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。 * 写...2012-12-07 14:32:50 · 148 阅读 · 0 评论 -
三色旗算法
[code="java"]import java.util.Arrays;/**问题:假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这个动作,而且一次只能调换两个旗子。网上的解法大多类似:在一条绳子上移动,在程式中也就意味只能使用一个...2012-11-29 12:19:06 · 266 阅读 · 0 评论 -
编程之美-分层遍历二叉树
[code="java"]import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class LevelTraverseBinaryTree { /** * 编程之美 分层遍历二叉树 * 之前已经用队列实现过二叉树的层次遍历,...2012-08-12 10:02:22 · 80 阅读 · 0 评论 -
编程之美-最短摘要的生成
[code="java"]import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;public class ShortestAbstract { /** * 编程之美 最短摘要的生成 * 扫描过程始终保持一个[pBegin,pEnd]的range,初始化确保[pBe...2012-08-10 18:37:42 · 146 阅读 · 0 评论 -
编程之美-计算字符串的相似度
[code="java"]public class StringDistance { /** * 编程之美 计算字符串的相似度 * 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: * 1.修改一个字符(如把“a”替换为“b”); * 2.增加一个字符(如把“abdd”变为“aebdd”); * 3.删除一个字符(如把“trave...2012-08-09 19:25:24 · 117 阅读 · 0 评论 -
编程之美-电话号码对应英语单词
[code="java"]import java.util.Arrays;public class NumberToWord { /** * 编程之美 电话号码对应英语单词 * 题目: * 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ, * 要求对一段数字,输出...2012-08-09 19:24:15 · 250 阅读 · 0 评论 -
编程之美-数组中最长递增子序列
[code="java"]import java.util.Arrays;import java.util.Random;public class LongestAccendingSubSequence { /** * 编程之美 数组中最长递增子序列 * 书上的解法容易理解 * 另一方法书上没有提到的是,可以将数组排序(由小到大)得到新的数组, *...2012-08-09 19:22:21 · 90 阅读 · 0 评论 -
单调队列-用一个长度为k的窗在整数数列上移动,求窗里面所包含的数的最大值...
[code="java"]import java.util.LinkedList;/*单调队列 滑动窗口单调队列是这样的一个队列:队列里面的元素是有序的,是递增或者递减题目:给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k.要求:f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0,1,...,N-1...2012-11-11 22:32:06 · 249 阅读 · 0 评论 -
编程之美-数组的最大值和最小值-分治法(两种形式)
[code="java"]import java.util.Arrays;public class MinMaxInArray { /** * 编程之美 数组的最大值和最小值 分治法 * 两种形式 */ public static void main(String[] args) { int[] t={11,23,34,4,6,7,8,1,2,2...2012-07-21 12:15:00 · 212 阅读 · 0 评论 -
编程之美-饮料供货-动态规划
[code="java"]import java.util.Arrays;import java.util.Random;public class BeverageSupply { /** * 编程之美 饮料供货 * 设Opt(V’,i)表示从i到n-1种饮料中,总容量为V’的方案中,满意度之和的最大值。 * 那么递归式就应该是:Opt(V’,i)=m...2012-07-20 12:28:11 · 174 阅读 · 0 评论 -
java-用邻接矩阵求图的最短路径、最长路径。弗洛伊德算法
see [url]http://eriol.iteye.com/blog/1186408[/url][url]http://blog.csdn.net/vinglemar/article/details/3605813[/url][img]http://dl.iteye.com/upload/attachment/0062/4023/38a85adb-b3fc-398f-810...2012-01-27 21:24:18 · 1119 阅读 · 0 评论 -
用邻接表实现图的深度优先遍历、广度优先遍历、最短路径(无权图)
[code="java"]import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Stack;public class Graph { /**关键字:图 邻接表 深度优先遍历 广度优先遍历 最短路径 * key words:G...2012-01-23 23:57:22 · 833 阅读 · 0 评论 -
java-输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc...
[code="java"]import java.util.ArrayList;import java.util.List;public class Combination { public static void main(String[] args) { char[] a = { 'a', 'b', 'c' }; List list = new Arra...2012-01-23 11:16:34 · 837 阅读 · 0 评论 -
java-按位反转一个整数-Reverse bits of an unsigned integer.
see [url]http://www.leetcode.com/2011/08/reverse-bits.html[/url][code="java"]public class ReverseBitsOfInteger { /** * like reversing a string. * we swap the bits in (0,N-1),(1,N-2)......2012-01-21 22:58:28 · 205 阅读 · 0 评论 -
java-八皇后问题
[code="java"]public class EightQueen { /** * 八皇后问题 * obviously,the location of a queen includes two index: row and column * 1.the eight queens should be put in different rows and diff...2012-01-20 23:55:51 · 80 阅读 · 0 评论 -
java-从先序遍历和中序遍历重建二叉树
[code="java"]public class BuildTreePreOrderInOrder { /** * Build Binary Tree from PreOrder and InOrder * _______7______ / \ __10__ ___2 / \ ...2012-01-17 22:55:00 · 133 阅读 · 0 评论 -
java-判断一个整数是否回文,考虑溢出
[code="java"]public class PalindromeInt { /** * PalindromeInt,like 1,121,12321.... * you should consider the possibility that the reversed number might overflow * eg. 1..................2012-01-15 21:50:07 · 156 阅读 · 0 评论 -
java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历
[code="java"]import java.util.LinkedList;import java.util.List;import java.util.Stack;public class BinTreeTraverse { //private int[] array={ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; private int[] ...2012-01-14 20:55:19 · 72 阅读 · 0 评论 -
链表操作总结
[b]单个链表:[/b] a.判断是否有环:快慢法(p1=p2=head,p1=p1.next,p2=p2.next.next) b.环的第一个节点:假设p1,p2在环内的某点p相遇,则p1从p点继续遍历,p2从头节点开始遍历,两者相等的第一个点即为所求(证明略) c.反向输出链表:利用递归。(printNode(p.next);p...2012-01-14 15:43:21 · 98 阅读 · 0 评论 -
java-7.微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如 h1 , h2 ,判断这俩个链表是否相交...
[code="java"]public class LinkListTest { /** * we deal with two main missions: * * A. * 1.we create two joined-List(both have no loop) * 2.whether list1 and list2 join * 3.p...2012-01-14 00:14:39 · 223 阅读 · 0 评论 -
java-打印不大于N的质数
[code="java"]public class PrimeNumber { /** * 寻找不大于N的质数 */ public static void main(String[] args) { int n=100; PrimeNumber pn=new PrimeNumber(); pn.printPrimeNumber(n); Sys...2012-01-13 00:32:02 · 371 阅读 · 0 评论