链表——在单链表和双向链表中删除倒数第k个结点 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:分别实现两个函数,分别删除单链表和双链表的倒数第K个节点。如果链表长度为N,要求时间复杂度达到O(N),额外空间复杂度达到O(N)。 实现单链表: 若单链表长度为空或K小于1,参数无效,直接返回(若设返回参数为Node,则不能直接return,需要加个返回参数,返回头节点,return he ... Read more »
链表——打印两个有序链表的公共部分 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。 实现:有序链表 if(head1 < head2) head1移到下一个节点 if(head1 > head2) head2移到下一个节点 if(head1 == head2) 打印这个值,head1和he ... Read more »
栈和队列——生成窗口最大值数组 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:输入:整型数组arr,长度为n,窗口大小为w。(顺序移窗,则一共产生n-w+1个窗)输出:一个长度为n-w+1的数组rst,rst[i]表示每种窗口状态下的最大值。如int[] arr = {4,3,5,4,6,3,3,6,7},数组长为7,窗口w=3,则int[] rst = {5,5,5, ... Read more »
栈和队列——用一个栈实现另一个栈的排序 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:一个栈中的元素为整型,现将栈中元素按从栈顶到栈底从大到小排序,值允许申请一个栈,不能再 申请额外的数据结构。 实现:1.定义要排序的栈stack,辅助栈temp。2.只要stack不为空,弹出栈顶数据int data = stack.pop(),一直进行如下操作:1)若从stack.pop() ... Read more »
栈和队列——猫狗队列 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:定义了一个Pet类,Dog类和Cat类分别实现了Pet类。实现一种猫狗队列:调用add方法将Dog或Cat的实例放入队列中;pollAll方法,把所有实例弹出;pollDog方法,把Dog类实例弹出;pollCat方法,把Cat类的实例弹出;isEmpty方法isDogEmpty方法isCat ... Read more »
栈和队列——仅用递归函数和栈,逆序一个栈 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:一个栈依次压入1、2、3、4、5,从栈顶到栈底为5、4、3、2、1,则逆序后从栈顶到栈低为1、2、3、4、5。 实现:需要设计两个递归函数 第一个递归:递归弹出栈内元素,获得栈底的元素并移除; 第二个递归:递归弹出栈底元素,然后重新压入元素,逆序栈内元素。 递归:就是在运行的过程中调用自己 ... Read more »
栈和队列——由两个栈组成的队列 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:编写一个类,用两个栈实现队列,支持队列的基本操作add()、poll()、peek()。 栈是先进后出,队列是先进先出。用两个栈就可完成队列操作: 定义两个栈stackPush,stackPop。 所有数据先入栈stackPush,再出栈stackPush, 然后入栈stackPop,再出栈 ... Read more »
栈和队列——设计一个有getMin()的栈 Posted on 2018-08-29 | In Tech , Data Structures and Algorithms 题目:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回最小元素的操作。要求:可以使用现有的栈结构。 实现:设计两个栈,一个栈dataStack保存输入的数据;另一个栈minStack保存每一步的最小值。方法一:1.压入规则push()当前数据为newNum,压入dataStack。然后判断m ... Read more »
Java基础(十)——Annotation Posted on 2018-08-29 | In Tech , Java , Java Basis 本章所说的Annotation是代码里的一种特殊标记,它是一个接口。程序可以通过反射来获得指定程序元素的Annotation对象,然后通过Annotation对象获得注解里的元数据。访问和处理Annotation的工具统称APT(Annotation Processing Tool)。 基本Anno ... Read more »
Java基础(九)——异常处理 Posted on 2018-08-28 | In Tech , Java , Java Basis Java的异常处理机制主要依赖于try、catch、finally、throw和throws五个关键字。其中: 1) try关键字后紧跟一个花括号括起来的代码块(即try块),里面放置可能引发异常的代码。2) catch后对应异常类型和一个代码块,表明该catch块用于处理这种类型的代码 ... Read more »