- 博客(10)
- 收藏
- 关注
原创 剑指Offer - 和为S的连续正数序列(Java实现)
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述: 输出所有和为S的连续正数...
2018-12-29 15:32:31 251
原创 剑指Offer - 二叉树的深度(Java实现)
题目描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路分析: 方法1:递归的思想解决问题。 public class Solution { public int TreeDepth(TreeNode root) { if(root == null){ return...
2018-12-24 15:04:29 129
原创 剑指Offer - 数字在排序数组中出现的次数(Java实现)
题目描述: 统计一个数字在排序数组中出现的次数 思路分析: 已下代码均通过牛客测试,主要工作只是在时间复杂度上的优化。 看到排序数组,然后又看到查找。首先就想到二分查找,开始的思路是先通过二分查找找出需要统计的那个数字,找到后再从那个位置依次向后遍历。代码如下: public class Solution { public int GetNumberOfK(int [] array ,...
2018-12-22 17:33:00 481
原创 剑指Offer - 数组中的逆序对(Java实现)
暴力查找,时间复杂度O(N^2),运行超时。 public class Solution { public int InversePairs(int [] array) { if(array == null || array.length < 2){ return 0; } int temp =...
2018-12-20 10:33:01 327
原创 剑指Offer-第一个只出现一次的字符(Java实现)
题目描述: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回-1(需要区分大小写). 思路分析: 方法一: 个人思路 比较粗暴,将字符串转换成字符数组,按顺序遍历字符数组。需要两个指针,指针1指向首次出现的字符,指针2从指针1的位置往后遍历,找出与指针1相同的字符。 1,新建一个HashSet集合,用于存储...
2018-12-18 15:21:33 2787
原创 剑指Offer-把数组排成最小的数(Java实现)
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路分析: 本题的核心思想还是排序,但是如何排序是个问题。 先将整型数组转换成字符串数组,然后按照自定义的比较器规则来排序。 对于任意两个字符串s1和s2,比较s1+s2和s2+s1,若s1+s2小于s2+s...
2018-12-15 16:21:15 124
原创 剑指Offer - 数组中出现次数超过一半的数字(Java实现)
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路分析: 方法1:借助HashMap,将数字以及出现次数依次存入Map集合中。 代码实现如下: import java.util.HashMap; public cla...
2018-12-09 22:29:01 229
原创 剑指Offer - 字符串的排列(Java实现)
题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路分析: 本题考察的是回溯法的思想。 代码实现如下: import java.util.ArrayList; import java.util.Collections; import java.util....
2018-12-06 22:44:34 233
原创 剑指Offer - 二叉搜索树与双向链表(Java实现)
题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路分析: 二叉搜索树(BST)有一个很关键的结论就是:中序遍历的结果是非递减(递增)序列。而本题要求将BST转换成排序的双向链表,核心就是考察二叉树的非递归中序遍历方法。需要借用栈空间,并且需要一个变量记录上一个出栈的元素。 代码实现如下: public class...
2018-12-05 21:34:58 168
原创 剑指Offer - 复杂链表的复制(Java语言实现)
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路分析: 方法1,借助HashMap。 遍历链表,依次将节点作为键(KEY)存入Map集合中,新建一个RandomListNode对象并将当前key的数值传入该对象中,...
2018-12-02 00:23:43 107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人