摘要:/*请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。*/ import java.util.*; public class Class63 { public class TreeNode { int va
阅读全文
摘要:/*给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。*/public class Class62 { public class TreeLinkNode { int val; TreeLinkNode left =
阅读全文
摘要:/*在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 */public class Class61 { public class ListNode{ int val; List
阅读全文
摘要:/*写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 *///只能利用位运算了public class Class54 { public int Add(int num1,int num2) { int temp = 0; while(num2 != 0){ temp
阅读全文
摘要:/*牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a stu
阅读全文
摘要:/*输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 *//*输出描述:对应每个测试案例,输出两个数,小的先输出。 */ import java.util.*; public class Class48 { public
阅读全文
摘要:/*一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 */ import java.util.*; public class Class45 { public void FindNumsAppearOnce(int[] array, int num1[],
阅读全文
摘要:/*输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 */public class Class43 { public class TreeNode { int val = 0; TreeNode left = null; Tre
阅读全文
摘要:/*统计一个数字在排序数组中出现的次数。*/ import java.util.*; public class Class42 { public int GetNumberOfK(int[] array , int k){ if(array == null || array.length == 0)
阅读全文
摘要:/*输入两个链表,找出它们的第一个公共结点。 */ import java.util.*; public class Class41 { public class ListNode { int val; ListNode next = null; ListNode(int val) { this.v
阅读全文
摘要:/*在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 */ import java.util.*; public class Class40 {
阅读全文
摘要:/*在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).*///用Map来实现 import java.util.*; public class Class39 { public int FirstNo
阅读全文
摘要:/*把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。 求按从小到大的顺序的第N个丑数。 */public class Class38 { public int GetUglyNumber_Solut
阅读全文
摘要:/*输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 */ import java.util.*; public class Class37 { public String
阅读全文
摘要:/*输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。*///本题借助函数sort可以很方便的解决,但是建议大家不要这样做。可以使用堆来实现。import java.util.*; public class Class34 {
阅读全文
摘要:/*数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 */ import java.util.*; public class Class3
阅读全文
摘要:/* 输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc, 则打印出由字符a,b,c所能排列出来的 所有字符串abc,acb,bac,bca,cab和cba。 */ import java.util.*; public class Class32 { public Arr
阅读全文
摘要:/*输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)*/public class Class30 { public class Ran
阅读全文
摘要:/*二叉树中和为某值的路径。输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 */ import java.util.*; public class Class29 { public class TreeNo
阅读全文
摘要:/*从上往下打印出二叉树的每个节点,同层节点从左至右打印。层序遍历时,一般都要用到队列,可以用LinkedList类(方法:poll() 和 offer(Obj) )。 */ import java.util.*; public class Class27 { public class TreeNo
阅读全文
摘要:/*包含min函数的栈 *///思路:设计一个辅助栈来放最小数import java.util.*; public class Class25 { Stack<Integer> data = new Stack<Integer>(); Stack<Integer> auxiliary = new S
阅读全文
摘要:/* 操作给定的二叉树,将其变换为源二叉树的镜像。 *///思路:根据二叉树中序的特点,使用栈来实现或者使用递归来实现。将镜像反转的特点和二叉树中序遍历的程序结合起来就可以实现了。 import java.util.*; public class Class23 { static class Tre
阅读全文
摘要:/*输入两棵二叉树A和B,判断B是不是A的子结构。*///解题思路://1)对A进行遍历,寻找B的根子节点//2)接着在A中寻找是否含有B的结构。public class Class22 { static class TreeNode{ double val; TreeNode left = nul
阅读全文
摘要:/*链表中环的入口结点*///思路,使用两个指针,一个快,一个慢,如果快的指针与慢的指针同时直到同一个节点,那么存在环。public class Class21 { //复杂问题分解成为几个简单问题(本题分为三步:找出环中任一结点;得到环的个数;找到入口结点) static class ListNo
阅读全文
摘要:import Class19.ListNode; /*输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。*/public class Class20 { static class ListNode{ int val; ListNode next = null
阅读全文
摘要:/*输入一个链表,反转链表后,输出链表的所有元素。*/public class Class19 { static class ListNode{ int val; ListNode next = null; ListNode(int val){ this.val = val; } } //迭代法 p
阅读全文
摘要:/*输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变*/ import java.util.*; public class Class17 { public void shuzi
阅读全文
摘要:/*给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 */public class Class16 { static class ListNode{ int val; ListNode next; public ListNode(int value, ListNode ne
阅读全文
摘要:/*给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。不得使用库函数,不需要考虑大数问题。注意事项:不能用==比较两个浮点数是否相等,因为有误差。考虑输入值的多种情况。*/public class Class14 { public doub
阅读全文
摘要:/*请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。 * 例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 */public class Class13 { public int findNumOfOne(int a){ int count = 0; while
阅读全文
摘要:public class Class112 { public boolean findPath(char[] matrix, int rows, int cols, char[] str){ boolean anchor[] = new boolean[matrix.length]; for(int
阅读全文
摘要:/*写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。*/ import java.util.*; public class Class9 { public int findFib(int a){ int sum = 1; if(a < 0){ throw new RuntimeEx
阅读全文
摘要:/*用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。*/ import java.util.*; public class Class8 { static class stackToQueue{
阅读全文
摘要:/*给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。*/ import java.util.*; public class Class7 { class TreeLinkNode{ int val; Tr
阅读全文