自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (4)
  • 收藏
  • 关注

原创 丑数

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。最后一个乘2,乘3,乘5的最小值,dp求解import java.util.List; import java.util.ArrayList ;public class Solution {

2016-12-25 20:03:29 231

原创 把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。将数字装换为字符串,修改比较条件为两个字符串连接和的值那个小在前面import java.util.ArrayList;import java.util.Collections ; import java.

2016-12-25 18:54:41 185

原创 连续子数组的最大和

给定一个序列,求其子序列中的最大和,序列长度最少为1dp[i]子序列的尾端是第i个数的最大子序列长度public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if(array.length == 0) return 0 ; int [] dp = new

2016-12-25 18:16:42 213

原创 最小的k个数

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。维护一个大小为k的大根堆,每次新进一个数就让其与根节点比较,如果其小于根节点,则将其替换掉根节点,调整大根堆,以此往复.

2016-12-25 18:09:42 161

原创 数组中出现次数超过一半的数

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。直接用hashmap o(n)即可求得import java.util.HashMap;import java.util.Map;import java.util.Map.

2016-12-25 16:19:49 247

原创 字符串的排列

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。先将原字符串按照字典序排列,直接用dfs实现全排列,然后去重import java.util.ArrayList;import java.util.Arrays;import java.util.Collec

2016-12-25 16:04:45 223

原创 复杂链表的复制

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。将原来的链表的每个节点都复制到其后面的那个节点,然后将复制节点的random指针指向原来节点的random.next就行,然后从这个链表中分离出两个链表/*public class RandomListNode { int label; Ra

2016-12-25 15:54:37 307

原创 二叉搜索树的后续遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。二叉搜索树的最后的节点是中间的一个节点,在其前面左半部分否小于它,右半部分都大于它public class Solution { public boolean verify(int [] sequence , int start ,

2016-12-24 21:17:28 206

原创 从上往下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。直接bfs搜索import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/**public class TreeNode { int val = 0; TreeNode left = null; Tre

2016-12-24 20:10:38 192

原创 栈的压入,弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)直接模拟第一个序列进栈,看能不能正确出栈import java.util.ArrayLi

2016-12-24 20:07:06 176

原创 包含min的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。维护一个最小栈,如果当前入栈的数小于等于最小栈的值,则当前节点入栈,否则,不入栈import java.util.Stack;public class Solution { private Stack stack = new Stack() ; private Stack minStack = new Stack()

2016-12-24 19:38:33 210

原创 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.import java.util.ArrayList;public class Solution { public Ar

2016-12-24 19:19:20 296

原创 二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像递归修改指针/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/p

2016-12-24 19:13:33 195

原创 树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结)刚开始用的是将两棵树重新前序遍历,然后通过kmp匹配,但是如果子结构有        1                                1      /    \                          /       \    2      3          

2016-12-24 19:06:41 275

原创 合并两个排序的链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution {

2016-12-24 16:18:25 198

原创 反转链表

输入一个链表,反转链表后,输出链表的所有元素。通过递归的方式修改指针/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode

2016-12-24 16:08:06 164

原创 链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个结点。维护两个指针,这两个指针之间相距k个节点,当前面的节点走到尾时,后面的节点则为倒数第k个节点/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/

2016-12-24 15:48:25 227

原创 数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。直接快速幂计算\public class Solution { public double Power(double base, int exponent) { double ans = 1.0; boolean flag = false ; if(exp

2016-12-24 15:42:19 168

原创 二进制中1的个数

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 直接将这个整数用数组表示,然后找到对应的1的个数 public class Solution {public int NumberOf1(int n) { int[] a = new int[50] ; boolean flag = false; if(n < 0){ n = -n ;

2016-12-24 15:34:03 174

原创 斐波那契数列相关

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39public class Solution { public int Fibonacci(int n) { int[] dp = {0,1} ; if(n < 2)return dp[n] ; for(int i = 2;i <= n;i++){

2016-12-24 15:00:15 265

原创 旋转数组的最小值

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。数组中最小数的左边数都大于等于它并且递增,数组中最小数的右边的数都小于等于它并且递减import java.util.ArrayList;public class So

2016-12-24 14:47:19 206

原创 用两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作 一个在push时stack1添加数据,在pop时出另一个栈stack2出数据,当stack2空时将stack1中的数据加到stack2中import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack

2016-12-24 14:21:18 270

原创 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。方法一:通过一个map记录中序数组中每个节点在数组中的位置,然后递归遍历前序数组,在中序数组中找到前序数组的位置,然后判定当前节点在中序遍历数组的根的位

2016-12-24 14:06:03 169

原创 从尾到头打印链表

/** * 输入一个链表,从尾到头打印链表每个节点的值 *//** * 通过递归方法解决 */import java.util.ArrayList;public class PrintListFromTailToHead { private ArrayList list = new ArrayList<>() ; public class ListNode { int

2016-12-24 13:12:17 158

原创 替换空格

/** * 请实现一个函数,将一个字符串中的空格替换成“%20”。 * 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy */public class ReplaceSpace { public String replaceSpace(StringBuffer str) { int num = 0 ; for(int i =

2016-12-24 12:57:28 171

原创 二维数组中的查找

/** * 在一个二维数组中, * 每一行都按照从左到右递增的顺序排序, * 每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数 * 判断数组中是否含有该整数。 */import java.util.Arrays;public class find { /** * 方法二:从左下角开始遍历,如果当前数比target小,则向右移动,如果当

2016-12-24 12:37:38 182

原创 数据流中的中位数

从一个数据流中获取其中位数/** * 维护两个优先队列,一个存储从中间到最大值的一半的数top , 这个队列为最小优先队列 * 另一个存储从中间到最小的一半数down, 这个队列为最大优先队列 */import java.util.Comparator;import java.util.PriorityQueue;import java.util.Queue;public cl

2016-12-24 12:10:14 240

原创 代理模式(结构类)

UML介绍意图: 为其他对象提供一种代理以控制对对象的访问优点: 1.职责清晰,真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事,附带的结果就是编程简洁清晰。2.高扩展性,具体主题角色会发生变化,但代理角色可以不发生变化。3.智能化缺点: 1.由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2.实现代理模式需

2016-12-18 16:23:45 298

原创 单例模式(创建类)

UML介绍意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。优点: 1.一个内存中只有一个实例,减少了内存的开销。2.避免对资源的多重占用缺点: 没有接口,与单一职责冲突应用: spring 中的bean类默认是单例的,这样spring可以管理其生命周期代码饿汉式public class SingletonHungry { private static Singleto

2016-12-18 14:54:20 355

原创 原型模式(创建类)

UML介绍意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。优点: 效率高,逃避构造约束缺点: 逃避构造约束例子AdvTemplatepublic class AdvTemplate { private String advContext ; private String advSubject ; public String getAdvCo

2016-12-18 13:53:40 288

原创 观察者模式(行为类)

UMLsubject(抽象主题角色): 主题角色将所有观察者对象的引用存入一个集合中,并且提供方法增加和删除观察者。Observer(抽象观察者对象): 为所有观察者对象定义一个接口,在得到抽象主题的通知时更新自己。ConcreteSubject(具体主题角色): 在具体主题的内部状态发生改变时,给所有登记过的观察者发出通知。ConcreteObserver(具体观察者角色): 存储于主题角

2016-12-12 13:49:38 346

原创 责任链模式(行为类)

UMLHandler(抽象处理角色): 定义一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回下家的引用。ConcreteHandler(具体处理者角色): 具体处理者角色接到请求后,可以选择将请求处理掉,或者传递到下家。介绍意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。优点: 1

2016-12-11 13:49:00 324

原创 状态模式(行为类)

UMLstate(抽象状态角色): 抽象类或接口,负责状态对象的定义,并且封装环境角色以实现状态切换ConcreteState(具体状态角色): 每一个具体状态角色必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗的说就是本状态下要做的事和本状态如何过度到其他状态。Context(环境角色): 定义客户端需要的接口,并且负责具体状态的切换.介绍意图: 允许对象在内部状态改变时改变它的

2016-12-10 14:57:15 413

原创 并发概念

线程安全当多个线程访问某个类时,不管运行时环境采用何种调度方法或者这些线程将如何交替运行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类为线程安全的。原子性一组语句作为一个不可分割的单元被执行。任何一个执行同步代码块的线程,都不可能看到有其他线程正在执行由同一个锁保护的同步代码块。竞态条件当某个计算的正确性取决于多个线程的交替执行

2016-12-07 15:16:27 357

原创 备忘录模式(行为类)

UML**Originator角色:**1.创建一个含有当前的内部状态的备忘录对象。2.使用备忘录对象存储其内部状态Mementor角色: 1.将发起人对象的内部状态存储起来。备忘录可以根据Originator对象的判断来决定存储多少Originator对象的内部状态负责人Caretaker角色: 1.负责保存备忘录对象。2.不检查备忘录对象的内容介绍意图: 在不破坏封装性的前提下,捕获一个

2016-12-07 13:55:19 375

原创 中介者模式(行为类)

UMLMediator角色: 抽象中介者角色定义统一的接口,用于各同事角色之间通信ConcreteMediator角色: 具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖各个同事角色Colleague 角色: 每个同事角色都知道中介者角色,而且与其他同事角色通信的时候,一定要通过中介者角色协作。每个同事角色分为两种,一种是同事本身的行为,比如改变自身的状态,处理自己的行为等,叫

2016-12-06 14:27:25 204

原创 命令模式(行为类)

UMLreceiver角色: 该角色是干活的角色,命令传递到这里是应该被执行的Command角色: 需要执行的命令都需要在这里执行Invoker角色: 接收到命令,并执行命令介绍意图: 将一个请求封装为一个命令,从而使得不同的请求对客户参数化优点: 1、降低了系统耦合度。 2、新的命令可以很容易添加到系统中去。缺点: 使用命令模式可能会导致某些系统有过多的具体命令类。用途: 模

2016-12-05 16:34:45 345

原创 门面模式(结构类)

UML介绍意图: 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。优点: 1.减少系统依赖 2.提高灵活性 3.提高安全性缺点: 不符合开闭原则实践: java三层开发模式例子UML描述一个家庭影院项目代码HomeTheaterFacade (Facade)public class HomeTheaterFacade { p

2016-12-04 13:30:21 384

原创 桥接模式(结构型)

UMLAbstraction-抽象化角色:主要职责是定义出该角色的行为,同时保存一个实现化角色的引用,该角色一般是抽象类Implementoe-实现化角色:定义角色必须的行为和属性RefinedAbstraction-修正抽象化角色:对抽象化角色修正ConcreteImpementor-具体实现化角色:实现接口或抽象类定义的方法和属性介绍意图:将抽象部分与实现部分分离,使它们都可以独立的

2016-12-03 16:31:46 620

原创 装饰模式(结构类)

UMLcomponent角色: Component 是一个接口或者一个抽象类,就是定义我们最核心的对象,也就是最原始的对象ConcreteComponent 角色: 定义一个将要接收附加责任的类Decorator角色: 持有一个构建对象的实例,并定义一个与抽象构件接口一致的接口Concrete Decorator角色: 负责给构件对象”贴上”附加的责任描述意图:动态地给一个对象添加一些额

2016-12-03 15:23:31 366

电子技术基础_模拟部分(第五版)_康华光_课后答案(无水印完整清洁版)

电子技术基础_模拟部分(第五版)_康华光_课后答案(无水印完整清洁版)

2015-10-30

Python学习手册

Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择

2015-09-11

python基础教程(第二版)

python基础教程中文高清pdf【第二版】

2015-09-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除