`
文章列表
/** * 线段树入门 * 问题:已知线段[2,5] [4,6] [0,7];求点2,4,7分别出现了多少次 * 以下代码建立的线段树用链表来保存,且树的叶子结点类似[i,i] * * 参考链接:http://hi.baidu.com/semluhiigubbqvq/item/be736a33a8864789f4e4ad18 * @author lijinnan */ public class SegmentTreeLearn { public static void main(String[] args) { Segm ...
import java.util.Random; /** * 题目: * 给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(y1,y2,y3,y4,y5), * 使得他们的哈密顿距离(d=|x1-y1| + |x2-y2| + |x3-y3| + |x4-y4| + |x5-y5|)最大。|x|=abs(x)。 * * 第一种方法当然是暴力遍历一次,求得最大值 * 第二种方法借助bitmap * 在网上找了两个相关的资料: * http://www.cppblog ...
import java.util.Arrays; /** * 最早是在陈利人老师的微博看到这道题: * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K * 设计一个排序算法。It should be faster than O(n*lgn)。 * * 英文原题是: * Given an array of n elements, where each element is at most k away from its targ ...
import java.util.Random; import java.util.Set; import java.util.TreeSet; /** * http://weibo.com/1915548291/z7HtOF4sx * #面试题#有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。 * 写一个函数实现。复杂度是什么。 * * 我认为这道题的考点是如何节省空间。 * 当然可以用一个与原数组长度相同的数组来标记对应元素是否被取过,但这样太浪费空间 * 用bitmap的话,只要一个bit就可以标记是否 ...
import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Label; import java.awt.TextField; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Obs ...
import java.util.Arrays; /** 问题: 假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序, 您希望将之分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳 子上进行这个动作,而且一次只能调换两个旗子。 网上的解法大多类似: 在一条绳子上移动,在程式中也就意味只能使用一个阵列,而不使用其它的阵列来作辅助, 问题的解法很简单,您可以自己想像一下在移动旗子,从绳子开头进行,遇到蓝色往前移, 遇到白色留在中间,遇到红色往后移。 只是要让移动次数最少的话,就要有些技巧: 如果图中W所在的位置为白 ...
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 ...
/* * Java里面的接口回调,最简单的情况示意如下 */ interface A {} class B implements A {} class C implements A {} class Test { A b = new B(); A c = new C(); } /* 我们重点关注——用Java接口实现回调函数的等价功能 简单来说,就是某个类的某个函数,接收一个接口作为参数(或者直接把该接口作为field), 那么就可以在这个函数中调用接口里面的方法了,称为回调 而接口的实现可以千变万化,将不同的接口的实现类传 ...
public class ScalesBalance { /** * 题目: * 给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 (假设N无限大,但一种重量的砝码只有一个) * 将重物放到天平左侧,问在两边如何添加砝码使两边平衡 * * 分析: * 三进制 * 我们约定括号表示里面的数是三进制,例如 47=(1202) * 先看天秤右侧。放的全是砝码,由于一种重量的砝码只有一个,那么右侧的重量之和,用三进制表示的话,只包含0和1 * 要使两边平衡,那么左边的重量和的三进制也应该只包含0和1 * 那 ...
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ /* 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况 把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化 如果在某段代码中if-else或者switch语句过多,老鸟们常常建议说,可以采用策略模式或者状态模式来重构 在我看来,策略模式仍然需要作if-else的判断,除非需求已明确指出要采用哪个策略 但状态模式似乎更好 ...
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ import java.util.ArrayList; import java.util.List; interface IVisitor { //第二次分派,Visitor调用Element void visitConcreteElementA(Concr ...
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * GOF 在《设计模式》一书中阐述命令模式的意图 ...
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ import java.util.Arrays; import java.util.List; /** * Iterator模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象内部表示 * * 个人觉得,为了不暴露该对象内部表示,而额外地提供一组访问接口(通用的遍历接口) * 具体来说,就是想办法在被遍历的对象里面提供一个获得Iterator的方法: Iterator iterator(){...} * 然后利用 ...
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ import java.util.ArrayList; import java.util.List; abstract class Component { public abstract void printStruct(String preStr); public void addChild(Component child) { throw new UnsupportedOperationException(&quo ...
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ /* * 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。 * 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 * * 在我看来,Mediator模式是把多个对象(Colleague)之间的交互集中到一个类(Mediator),由Mediator统一控制 * Colleague之间就不再直接联系了(就解耦了),而是要通过Mediator才能间接联系上 * * ...
Global site tag (gtag.js) - Google Analytics