剑指Offer(Java版)第四十六题:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。
摘要:/*小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出
阅读全文
posted @
2020-03-19 13:15
桌子哥
阅读(128)
推荐(0)
剑指Offer(Java版)第四十五题:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
摘要:/*一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 */ import java.util.*; public class Class45 { public void FindNumsAppearOnce(int[] array, int num1[],
阅读全文
posted @
2020-03-19 12:45
桌子哥
阅读(478)
推荐(0)
剑指Offer(Java版)第四十四题:输入一棵二叉树,判断该二叉树是否是平衡二叉树。
摘要:/*输入一棵二叉树,判断该二叉树是否是平衡二叉树。*///平衡二叉树(Balanced Binary Tree),具有以下性质://它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,//并且左右两个子树都是一棵平衡二叉树。//最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)
阅读全文
posted @
2020-03-19 11:18
桌子哥
阅读(140)
推荐(0)
剑指Offer(Java版)第四十三题:输入一棵二叉树,求该树的深度。 从根结点到叶结点依次经过的结点 (含根、叶结点)形成树的一条路径, 最长路径的长度为树的深度。
摘要:/*输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 */public class Class43 { public class TreeNode { int val = 0; TreeNode left = null; Tre
阅读全文
posted @
2020-03-19 10:48
桌子哥
阅读(329)
推荐(0)
剑指Offer(Java版)第四十二题:统计一个数字在排序数组中出现的次数。
摘要:/*统计一个数字在排序数组中出现的次数。*/ import java.util.*; public class Class42 { public int GetNumberOfK(int[] array , int k){ if(array == null || array.length == 0)
阅读全文
posted @
2020-03-18 21:50
桌子哥
阅读(439)
推荐(0)
剑指Offer(Java版)第四十一题:输入两个链表,找出它们的第一个公共结点。
摘要:/*输入两个链表,找出它们的第一个公共结点。 */ import java.util.*; public class Class41 { public class ListNode { int val; ListNode next = null; ListNode(int val) { this.v
阅读全文
posted @
2020-03-18 21:39
桌子哥
阅读(220)
推荐(0)
剑指Offer(Java版)第四十题:在数组中的两个数字,如果前面一个数字大于后面的数字, 则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模的结果输出。 即输出P%1000000007
摘要:/*在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 */ import java.util.*; public class Class40 {
阅读全文
posted @
2020-03-18 21:30
桌子哥
阅读(656)
推荐(0)
剑指Offer(Java版)第三十九题:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符, 并返回它的位置, 如果没有则返回 -1(需要区分大小写).
摘要:/*在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).*///用Map来实现 import java.util.*; public class Class39 { public int FirstNo
阅读全文
posted @
2020-03-18 16:40
桌子哥
阅读(406)
推荐(0)
剑指Offer(Java版)第三十八题:把只包含质因子2、3和5的数称作丑数(Ugly Number)。 例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。 求按从小到大的顺序的第N个丑数。
摘要:/*把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。 求按从小到大的顺序的第N个丑数。 */public class Class38 { public int GetUglyNumber_Solut
阅读全文
posted @
2020-03-18 15:42
桌子哥
阅读(781)
推荐(0)
剑指Offer(Java版)第三十七题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321}, 则打印出这三个数字能排成的最小数字为321323。
摘要:/*输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 */ import java.util.*; public class Class37 { public String
阅读全文
posted @
2020-03-18 14:26
桌子哥
阅读(554)
推荐(0)
剑指Offer(Java版)第三十五题:给一个数组,返回它的最大连续子序列的和
摘要:/*HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,
阅读全文
posted @
2020-03-18 10:47
桌子哥
阅读(176)
推荐(0)
剑指Offer(Java版)第三十四题:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
摘要:/*输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。*///本题借助函数sort可以很方便的解决,但是建议大家不要这样做。可以使用堆来实现。import java.util.*; public class Class34 {
阅读全文
posted @
2020-03-17 22:09
桌子哥
阅读(531)
推荐(0)
剑指Offer(Java版)第三十三题:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
摘要:/*数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 */ import java.util.*; public class Class3
阅读全文
posted @
2020-03-17 21:08
桌子哥
阅读(531)
推荐(0)
剑指Offer(Java版)第三十二题:输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc, 则打印出由字符a,b,c所能排列出来的 所有字符串abc,acb,bac,bca,cab和cba。
摘要:/* 输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc, 则打印出由字符a,b,c所能排列出来的 所有字符串abc,acb,bac,bca,cab和cba。 */ import java.util.*; public class Class32 { public Arr
阅读全文
posted @
2020-03-17 18:17
桌子哥
阅读(1277)
推荐(0)
剑指Offer(Java版)第三十一题:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 要求不能创建任何新的结点,只能调整树中结点指针的指向。
摘要:/*输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。*///概念:二叉搜索树,它或者是一棵空树,或者是具有下列性质的二叉树: //若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; //若它的右子树不空,则右子树上所有结点
阅读全文
posted @
2020-03-17 16:07
桌子哥
阅读(251)
推荐(0)
剑指Offer(Java版)第三十题(有难度):输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点, 另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
摘要:/*输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)*/public class Class30 { public class Ran
阅读全文
posted @
2020-03-17 13:55
桌子哥
阅读(189)
推荐(0)
剑指Offer(Java版)第二十九题:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
摘要:/*二叉树中和为某值的路径。输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 */ import java.util.*; public class Class29 { public class TreeNo
阅读全文
posted @
2020-03-17 12:55
桌子哥
阅读(195)
推荐(0)
剑指Offer(Java版)第二十八题:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
摘要:/*输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 *///思路://二叉树后序遍历数组的最后一个数为根结点,剩余数字中,//小于根结点的数字(即左子树部分)都排在前面,大于根结点的数字(即右子树部分)都排在
阅读全文
posted @
2020-03-17 12:21
桌子哥
阅读(304)
推荐(0)
剑指Offer(Java版)第二十七题:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
摘要:/*从上往下打印出二叉树的每个节点,同层节点从左至右打印。层序遍历时,一般都要用到队列,可以用LinkedList类(方法:poll() 和 offer(Obj) )。 */ import java.util.*; public class Class27 { public class TreeNo
阅读全文
posted @
2020-03-16 23:11
桌子哥
阅读(303)
推荐(0)