# Offer **Repository Path**: mijingling/Offer ## Basic Information - **Project Name**: Offer - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-06-07 - **Last Updated**: 2024-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 《剑指offer》Java版代码 ![封面图片](https://img-blog.csdnimg.cn/201906290844352.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaXllX3hpbmc=,size_16,color_FFFFFF,t_70) ##### 提供多种解法以及思路,并在OJ上全都通过 ### 目录 |题号|题目及题解|测试用例| |:-----|:----|:----| |第二题|[单例设计模式](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/SingletonPattern2.java)|[测试2](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test2.java)| |第三题|[二维数组中查找目标值](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FindNumber3.java)|[测试3](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test3.java)| |第四题|[替换字符串中的空格](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/ReplaceBlank4.java)|[测试4](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test4.java)| |第五题|[从尾到头打印链表](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/PrintListReversing5.java)|[测试5](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test5.java)| |第六题|[由前序和中序遍历重建二叉树](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/BinaryTreeSearch6.java)|[测试6](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test6.java)| |第七题|[用两个栈实现队列](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/DoubleSQueue7.java)|[测试7](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test7.java)| |第八题|[求旋转数组的最小数字](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/MinNumber8.java)|[测试8](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test8.java)| |第九题|[斐波那契数列的第n项(青蛙跳台阶)](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/Fibonacci9.java)|[测试9](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test9.java)| |第十题|[二进制中1的个数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/NumberOfBin10.java)|[测试10](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test10.java)| |第十一题|[数值的整数次方](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/Power11.java)|[测试11](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test11.java)| |第十二题|[打印1到最大的n位数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/PrintToMaxOfNDigits12.java)|[测试12](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test12.java)| |第十三题|[O(1)时间删除链表节点](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/DeleteNode13.java)|[测试13](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test13.java)| |第十四题|[使数组中的奇数位于偶数前面](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/OddEvenNumber14.java)|[测试14](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test14.java)| |第十五题|[找链表中倒数第K个节点](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FindKthToTail15.java)|[测试15](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test15.java)| |第十六题|[反转链表](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/ReverseList16.java)|[测试16](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test16.java)| |第十七题|[合并两个有序链表](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/MergeLinked17.java)|[测试17](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test17.java)| |第十八题|[判断二叉树A中是否包含子树B](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/DoesTreeHave18.java)|[测试18](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test18.java)| |第十九题|[二叉树的镜像](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/MirrorRecursively19.java)|[测试19](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test19.java)| |第二十题|[顺时针打印矩阵](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/PrintMatrixInCircle20.java)|[测试20](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test20.java)| |第二十一题|[包含min函数的栈](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/StackWithMin21.java)|[测试21](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test21.java)| |第二十二题|[判断一个栈是否是另一个栈的弹出序列](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/IsPopOrder22.java)|[测试22](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test22.java)| |第二十三题|[层序遍历二叉树](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/PrintFromTopToBottom23.java)|[测试23](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test23.java)| |第二十四题|[后序遍历二叉搜索树](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/VerifySequerceOfBST24.java)|[测试24](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test24.java)| |第二十五题|[二叉树中和为某值的路径](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FindPath25.java)|[测试25](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test25.java)| |第二十六题|[复杂链表的复制](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/CloneCLinkedList26.java)|[测试26](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test26.java)| |第二十七题|[二叉搜索树转换为双向链表](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/BinaryToLinked27.java)|[测试27](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test27.java)| |第二十八题|[打印字符串中所有字符的排列](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/Permutation28.java)|[测试28](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test28.java)| |第二十九题|[数组中出现次数超过一半的数字](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/MoreThanHalfNum29.java)|[测试29](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test29.java)| |第三十题|[找出最小的K个数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/GetLeastNumbers30.java)|[测试30](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test30.java)| |第三十一题|[连续子数组的最大和](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FindGreatestSum31.java)|[测试31](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test31.java)| |第三十二题|[从1到整数n中1出现的次数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/NumberOf1Bw32.java)|[测试32](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test32.java)| |第三十三题|[把数组中的数排成一个最小的数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/PrintMinNumber33.java)|[测试33](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test33.java)| |第三十四题|[求第N个丑数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/UglyNumber34.java)|[测试34](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test34.java)| |第三十五题|[第一个出现一次的字符](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FirstNotRepeating35.java)|[测试35](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test35.java)| |第三十六题|[数组中逆序对的个数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/InversePairs36.java)|[测试36](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test36.java)| |第三十七题|[两个链表的第一个公共节点](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FindFirstCommonNode37.java)|[测试37](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test37.java)| |第三十八题|[数字在排序数组中出现的次数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/GetNumberOfK38.java)|[测试38](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test38.java)| |第三十九题|[二叉树的深度](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/TreePath39.java)|[测试39](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test39.java)| |第四十题|[数组中只出现一次的两个数,而其他数都出现两次](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FindNumAppearOnce40.java)|[测试40](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test40.java)| |第四十一题|[和为s的连续整数序列](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FindNumbersWithSum41.java)|[测试41](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test41.java)| |第四十二题|[翻转字符串](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/ReverseSentence42.java)|[测试42](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test42.java)| |第四十三题|[n个骰子的点数及出现的概率](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/DicesProbability43.java)|[测试43](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test43.java)| |第四十四题|[扑克牌的顺子](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/IsContinuous44.java)|[测试44](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test44.java)| |第四十五题|[圆圈中最后剩下的数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/LastRemaining45.java)|[测试45](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test45.java)| |第四十六题|[1+2+3+...+n的和](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/Calculate46.java)|[测试46](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test46.java)| |第四十七题|[不用加减乘除做加法](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/Add47.java)|[测试47](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test47.java)| |第四十八题|[不能被继承的类](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FinalClass48.java)|[测试48](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test48.java)| |第四十九题|[字符串转换为整数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/StrToInt49.java)|[测试49](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test49.java)| |第五十题|[树中两个节点的最低公共祖先](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/MinCParent50.java)|[测试50](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test50.java)| |第五十一题|[找出重复的数](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/Duplicate51.java)|[测试51](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test51.java)| |第五十二题|[构建乘积数组](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/MultiplyArray52.java)|[测试52](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test52.java)| |第五十三题|[正则表达式匹配](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/RegularMatch53.java)|[测试53](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test53.java)| |第五十四题|[表示数值的字符串](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/IsNumber54.java)|[测试54](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test54.java)| |第五十五题|[字符流中第一个不重复的字符](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/FirstAppearingOnce55.java)|[测试55](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test55.java)| |第五十六题|[链表中环的入口节点](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/EnterLoop56.java)|[测试56](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test56.java)| |第五十七题|[删除链表中重复的节点](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/DeleteDuplication57.java)|[测试57](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test57.java)| |第五十八题|[二叉树的下一个节点](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/NextTreeNode58.java)|[测试58](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test58.java)| |第五十九题|[对称的二叉树](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/IsSymmetrical59.java)|[测试59](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test59.java)| |第六十题|[按之字形顺序打印二叉树](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/ZTreePrint60.java)|[测试60](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test60.java)| |第六十一题|[把二叉树打印成多行](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/LevelPrintTree61.java)|[测试61](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test61.java)| |第六十二题|[序列化二叉树](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/Serializer62.java)|[测试62](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test62.java)| |第六十三题|[二叉搜索树的第K个节点](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/main/java/com/so/KthNode63.java)|[测试63](https://github.com/GaoLeiQin/SwordOffer/blob/master/src/test/java/com/so/Test63.java)|