![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
剑指offer-50-树中两个节点的最低公共祖先-java
1原创 2021-01-16 12:49:43 · 122 阅读 · 0 评论 -
剑指offer-49-把字符串转为整数-java
题目及测试package sword049;/* 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 * 数值为0或者字符串不是一个合法的数值则返回0*/public class main { public static void main(String[] args) { String [] testTable = {"123","+12","-569","+12345678901556","-2147483648","-2147483649","2147483原创 2021-01-16 12:48:33 · 117 阅读 · 0 评论 -
剑指offer-47-不用加减乘除做加法-java
题目及测试package sword047;/* 写一个函数,求两个整数之和,要求在函数体内不得使用+,-,x,÷四则运算符号。*/import java.util.List;public class main { public static void main(String[] args) { int [] testTable = {1,8,21}; int [] testTable2 = {4,9,32}; for(int i=0;i<testTable.原创 2021-01-16 12:48:08 · 109 阅读 · 0 评论 -
剑指offer-46-求1+2+...+n-java
题目及测试package sword046;/* 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。*/public class main { public static void main(String[] args) { int[] testTable = {123,-2561,1340,-2147483648}; for (int i=0;i<testTable.length;原创 2021-01-16 12:47:46 · 121 阅读 · 0 评论 -
剑指offer-45-圆圈中最后剩下的数字-java
题目及测试package sword045;/* 题目:0,1,...,n-1 这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。测试样例:输入: 0,1 , 2, 3, 4输出: 3*/import java.util.List;public class main { public static void main(String[] args) { int [] testTable = {5,10,15}; i原创 2021-01-11 21:35:27 · 144 阅读 · 0 评论 -
剑指offer-44-扑克牌的顺子-java
题目及测试package sword044;/*扑克牌的顺子从扑克牌中随机抽出5张牌,判断是不是一个顺子,即这五张牌是不是连续的。2——10为数字本身,A为1,J为11,Q为12,K为13,而大小王为任意数字。*/public class main { public static void main(String[] args) { int[][] testTable = {{1,2,3,2,5},{1,2,3,4,5},{1,2,0,0,4},{1,6,2,7,1}};原创 2021-01-11 21:35:04 · 138 阅读 · 0 评论 -
剑指offer-43-n个骰子的点数-java
题目及测试package sword043;/* 题目:把n个骰子仍在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。*/import java.util.List;public class main { public static void main(String[] args) { int [] testTable = {0,6,3}; for (int ito : testTable) { test(ito); } }原创 2021-01-11 21:32:05 · 111 阅读 · 0 评论 -
剑指offer-42-翻转单词顺序VS左旋转字符串-java
题目及测试package sword042;/*题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 * 为简单起见,标点符号和普通字母一样处理。 * 例如输入字符串为“I am a Student.",则输出为”Student. a am i".题目二:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转的功能。比如输入字符串”abcdefg"和数字2,该函数将返回左旋转2位得到的结果“cdefgab"*/pub原创 2021-01-11 21:31:42 · 108 阅读 · 0 评论 -
剑指offer-41-和为s的两个数字VS和为s的连续正数序列-java
题目及测试package sword041;/* 题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。假设有多个数字的和等于s,输出随意一对就可以。比如输入数组{1,2,4,7,11,15}和数字15.因为4+11=15。因此输出4和11.题目二:输入一个正数s,打印出全部的和为s的连续正数序列(至少含有两个数字)。比如输入15。因为1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续的序列1——5,4——6。7——8.*/im原创 2021-01-11 21:31:23 · 126 阅读 · 0 评论 -
剑指offer-40-数组中只出现一次的数字-java
题目及测试package sword040;/*一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。*/public class main { public static void main(String[] args) { int[][] testTable = {{1,2},{1,1,2,2,5,6,7,7},{1,2,3,3},{1,1,2,3}}; for (int[] ito : testTable) { test(ito);原创 2020-12-31 20:42:50 · 104 阅读 · 0 评论 -
剑指offer-39-二叉树的深度-java
题目及测试package sword039;/*题目:输入一棵二叉树的根节点,求该数的深度。从根节点到叶结点依次进过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。*/public class main { public static void main(String[] args) { Object[] x=new Object[]{3,9,20,null,null,15,7}; BinaryTree tree=new BinaryTree(x);原创 2020-12-31 20:39:42 · 95 阅读 · 0 评论 -
剑指offer-38-数字在排序数组中出现的次数-java
题目及测试package sword038;/*统计一个数字在排序数组中出现的次数。*/public class main { public static void main(String[] args) { int[][] testTable = {{1,2,2,3},{1,2,3,4}}; for (int[] ito : testTable) { test(ito,2); } } private static void test(int[] ito原创 2020-12-31 20:39:22 · 107 阅读 · 0 评论 -
剑指offer-37-两个链表的第一个公共节点-java
题目及测试原创 2020-12-31 20:38:39 · 139 阅读 · 0 评论 -
剑指offer-36-数组中的逆序对-java
题目及测试package sword036;/*题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 * 输入一个数组,求出这个数组中的逆序对的总数*/public class main { public static void main(String[] args) { int[][] testTable = {{1,1,2},{7,4,6,5},{4,3,2,1},{1,1,1,1}}; for (int[] ito : testTable)原创 2020-12-26 11:06:25 · 111 阅读 · 0 评论 -
剑指offer-35-第一个只出现一次的字符-java
题目及测试package sword035;/* 题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'.*/public class main { public static void main(String[] args) { String [] testTable = {"leetcode","abaccdeff"}; for (String ito : testTable) { test(ito); } } pri原创 2020-12-26 11:03:57 · 94 阅读 · 0 评论 -
剑指offer-34-丑数-java
题目及测试package sword034;/* 把只包含因子2、3和5的数称作丑数(Ugly Number)。 * 例如6、8都是丑数,但14不是,因为它包含因子7。 * 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。*/public class main { public static void main(String[] args) { int[] testTable = {123,-2561,1340,-2147483648}; for (int i原创 2020-12-26 11:01:02 · 98 阅读 · 0 评论 -
剑指offer-33-把数组排成最小的数-java
题目及测试package sword033;/* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数, * 打印能拼接出的所有数字中最小的一个。 * 例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.*/public class main { public static void main(String[] args) { int[][] testTable = {{3,32,321},{3,12,121,5,9}}; for (int[]原创 2020-12-26 10:58:26 · 132 阅读 · 0 评论 -
剑指offer-32-从1到n整数中1出现的次数-java
题目及测试package sword032;/* 输入一个整数n,求从1到n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11,和12,1一共出现了5次。*/public class main { public static void main(String[] args) { int[] testTable = {12,-2561,1340,-2147483648}; for (int i=0;i<testTable.lengt原创 2020-12-19 09:40:35 · 120 阅读 · 0 评论 -
剑指offer-31-连续子数组的最大和-java
题目及测试原创 2020-12-19 09:40:14 · 89 阅读 · 0 评论 -
剑指offer-30-最小的k个数-java
题目及测试package sword030;/* 题目:输入n个整数,找出其中最小的k个数。 * 例如输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。*/import java.util.List;public class main { public static void main(String[] args) { int[][] testTable = {{1,3,4,2,2,3},{1,1,1,1,2}}; int[] test原创 2020-12-12 11:28:01 · 128 阅读 · 0 评论 -
剑指offer-29-数组中出现次数超过一半的数字-java
题目及测试package sword029;/*数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 * 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次, * 超过数组长度的一半,因此输出2。如果不存在则输出0。*/public class main { public static void main(String[] args) { int[][] testTable = {{1,1,2},{1,2,3,2,2,2,原创 2020-12-12 11:27:25 · 113 阅读 · 0 评论 -
剑指offer-28-字符串的排列-java
题目及测试package sword028;/* 输入一个字符串,按字典序打印出该字符串中字符的所有排列。 * 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。*/import java.util.List;public class main { public static void main(String[] args) { String[] testTable = {"24","aabc","abc原创 2020-12-05 11:19:19 · 177 阅读 · 0 评论 -
剑指offer-27-二叉搜索树与双向链表-java
题目及测试package sword027;/*题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。*/public class main { public static void main(String[] args) { Object[] x=new Object[]{4,1,6,0,2,5,7,null,null,null,3,null,null,null,8}; BinaryTree tree=new原创 2020-12-05 11:18:50 · 143 阅读 · 1 评论 -
剑指offer-26-复杂链表的复制-java
题目及测试package sword026;/* 题目:输入一个复杂链表(每个节点中有节点值,以及两个指针, * 一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。 * (注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空*/public class main { public static void main(String[] args) { Node a=new Node(); Node b=new No原创 2020-12-05 11:17:48 · 195 阅读 · 0 评论 -
剑指offer-25-二叉树中和为某一值的路径-java
题目及测试package sword025;import java.util.List;/*题目:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 * 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 * (注意: 在返回值的list中,数组长度大的数组靠前)*/public class main { public static void main(String[] args) { Object[] x=new Obj原创 2020-12-05 11:17:24 · 184 阅读 · 1 评论 -
剑指offer-24-二叉搜索树的后序遍历序列-java
题目及测试package sword024;/*题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同例如:输入数组{5,7,6,9,11,10,8},则经判断是二叉搜索树,返回true;如果输入数组{7,4,6,5},则经判断 不是二叉搜索树,返回false。 8 / \ 6原创 2020-12-05 11:13:32 · 107 阅读 · 0 评论 -
剑指offer-23-从上往下打印二叉树-java
题目及测试package sword023;import java.util.List;/*从上往下打印出二叉树的每个节点,同层节点从左至右打印。*/public class main { public static void main(String[] args) { Object[] x=new Object[]{1,2,2,3,4,4,3}; BinaryTree tree=new BinaryTree(x); BinaryTree.printTree(tree.原创 2020-11-28 14:05:03 · 102 阅读 · 0 评论 -
剑指offer-22-栈的压入、弹出序列-java
题目及测试package sword022;/* 题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列。 * 假设压入栈的所有数字均不相等。 * 例如序列1/2/3/4/5是某栈的压栈序列,序列4/5/3/2/1是该压栈序列对应的一个弹出序列,但4/3/5/1/2就不可能是该压栈序列的弹出序列;*/public class main { public static void main(String[] args) { int[][] t原创 2020-11-28 14:04:28 · 94 阅读 · 0 评论 -
剑指offer-21-包含min函数的栈-java
题目及测试package sword021;/* 题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push以及pop的时间复杂度为O(1)*/public class main { public static void main(String[] args) { test(); } private static void test() { Solution solution = new Solution();原创 2020-11-28 14:03:34 · 117 阅读 · 1 评论 -
剑指offer-20-顺时针打印矩阵-java
题目及测试package sword020;/*题目描述:输入一个矩阵,按照从外向里以顺时针的顺组依次打印出每一个数字。*/import java.util.List;public class main { public static void main(String[] args) { //int[][] testTable = {{1, 2, 3, 4},{5, 6, 7, 8},{9,10,11,12}}; int[][] testTable = {{1, 2, 3,原创 2020-11-21 11:57:17 · 103 阅读 · 0 评论 -
剑指offer-19-二叉树的镜像-java
题目及测试package sword019;/*题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像;*/public class main { public static void main(String[] args) { Object[] x=new Object[]{4,1,6,0,2,5,null}; BinaryTree tree=new BinaryTree(x); BinaryTree.printTree(tree.root); test(t原创 2020-11-19 20:52:33 · 118 阅读 · 0 评论 -
剑指offer-18-树的子结构-java
题目及测试package sword018;/*题目描述:输入两棵二叉树A和B,判断B是不是A的子结构;*/public class main { public static void main(String[] args) { Object[] x=new Object[]{1,3,2,5,2,4,8}; BinaryTree tree=new BinaryTree(x); BinaryTree.printTree(tree.root); Object[] x原创 2020-11-19 20:52:18 · 87 阅读 · 0 评论 -
剑指offer-17-合并两个排序的链表-java
题目及测试package sword017;/*问题描述: 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。*/public class main { public static void main(String[] args) { LinkList a=new LinkList(1); a.addLast(2); a.addLast(5); LinkList b=new LinkList(-5); b.addLast(原创 2020-11-19 20:50:16 · 110 阅读 · 0 评论 -
剑指offer-16-反转链表-java
题目及测试package sword016;/* 问题描述:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。*/public class main { public static void main(String[] args) { LinkList a=new LinkList(1); a.addLast(2); a.addLast(3); a.addLast(4); a.addLast(5); a.printList(); t原创 2020-11-19 20:49:50 · 119 阅读 · 0 评论 -
剑指offer-15-链表中倒数第K个结点-java
题目及测试package sword015;/* 问题描述:输入一个链表,输出该链表中倒数第K个结点。 * 为了符合大多数人的习惯,从1开始计数,即链表的尾结点是倒数第一个结点。 * 例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6. * 这个链表的倒数第三个结点是值为4的结点。*/public class main { public static void main(String[] args) { LinkList a=new Lin原创 2020-11-13 21:01:14 · 93 阅读 · 0 评论 -
剑指offer-14-调整数组顺序使奇数位于偶数的后面-java
题目及测试package sword014;/*问题描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分;*/public class main { public static void main(String[] args) { int[][] testTable = {{0,1,0,3,12},{1,2,3,4},{1,0,1,3,0,4,0,2,0,2},{0,6,2,7,0}}; for (int[]原创 2020-11-13 21:00:37 · 152 阅读 · 0 评论 -
剑指offer-13-O(1)时间删除链表结点-java
题目及测试package sword013;/*问题描述:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。*/public class main { public static void main(String[] args) { LinkList a=new LinkList(1); a.addLast(2); a.addLast(5); a.printList(); test(a.first,a.first.next.n原创 2020-11-11 21:16:55 · 137 阅读 · 0 评论 -
剑指offer-12-打印1到最大的n位数-java
题目及测试package sword012;/* 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。*/public class main { public static void main(String[] args) { int [] testTable = {0,1,2}; for (int ito : testTable) { test(ito); } } private static原创 2020-11-11 21:14:25 · 140 阅读 · 0 评论 -
剑指offer-11-数值的整数次方-java
题目及测试package sword011;/* 问题描述:实现函数double power(double base,int exponent),求base的exponent次方。不能使用库函数,同时不需要考虑大数问题。*/public class main { public static void main(String[] args) { double [] testTable = {1,2,2.1}; int [] testTable2 = {4,9,15}; for原创 2020-11-09 10:13:37 · 133 阅读 · 0 评论 -
剑指offer-10-二进制中1的个数-java
题目及测试package sword010;/* 问题描述: 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1 因此如果输入9,该函数输出2;*/public class main { public static void main(String[] args) { int[] testTable = {1023,-2561,1024,-2147483648,-2147483647}; for (int i=0;i<te原创 2020-11-06 09:52:39 · 97 阅读 · 0 评论