![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
萌萌哒huo
这个作者很懒,什么都没留下…
展开
-
剑指offer39:数组中出现次数超过一半的数字
1. 题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如:{1,2,3,2,2,2,5,4,2}输出:22. 思路这是一个十分巧妙的想法:由于目标数字的数量超过数组长度的一半,也就是超过其他所有数字之和。①我们可以从第一个数字开始遍历,并用一个变量count存储它出现的次数,初始化为1;②当下一个数字与它不同时,count减1。当count减到小于或等于0时,把正遍历到的这个数作为新的基准,并设定count=1,按照上述过程继续遍历剩下的数组。原创 2022-05-11 22:22:06 · 198 阅读 · 0 评论 -
剑指offer33:二叉搜索树的后序遍历
1. 题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。例如:[5,7,6,9,11,10,8] 返回true[7,4,6,5] 返回fasle2. 题目思路前置知识:①二叉搜索树左子树上的点都小于根节点,右子树上的点都大于根节点;②由于是后序遍历,因此根节点位于末尾。具体解法如下:①先取出列表最后的元素作为根节点,将列表...原创 2022-04-17 15:18:38 · 509 阅读 · 0 评论 -
剑指offer32-3:从上到下“之”字形打印二叉树
1. 题目说明“之”字形打印二叉树:输出:[[1], [3, 2], [4,5,6,7], [15,14,13,12,11,10,9,8]]2. 解题思路有了前面两道题的经验,我二话不说,直接找规律。先构建两个栈,第一个栈先存取头节点1,然后pop出,将其左右节点按照先左后右的节点顺序push进stack2,按照此操作进行即可。 stack1=[1] ans=[] stack2=[] ..原创 2022-04-10 22:20:46 · 677 阅读 · 0 评论 -
剑指offer32-2:从上到下分行打印二叉树
1. 题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。输出:[[3], [9, 20], [15, 7]]即在上题的基础上,分行打印。2. 解题思路在上一题层序打印二叉树的基础上,在while中加入for循环,循环次数为该层的节点数:将该层的节点值先存入容器1中。for循环结束后,再把容器1放进容器2中,即可得到满足题目要求的输出。3. 代码import java.util.ArrayList;import java.util.LinkedLi原创 2022-04-10 21:58:42 · 416 阅读 · 0 评论 -
剑指offer32-1:从上到下打印二叉树
1. 题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。输出:[3, 9, 20, 15, 7]2. 解题思路其实为二叉树的层序遍历。①第一个节点为3,存储到一个容器中,list = [3]②将容器中第一个元素取出,放进最终答案的容器中,ans = [3];并将刚才取出元素的左右节点依次放入一开始的容器,list = [9, 20]③重复第二个步骤:list = [20] ans = [3, 9]...原创 2022-04-09 22:31:12 · 706 阅读 · 0 评论 -
剑指offer50:第一个只出现一次的字符
1. 题目在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。2. 分析可以采用Map,用键存储字符,用值存储该字符出现的次数。本题还有一个比较巧妙的点是,采用数组模拟Map时,直接利用字符串做差计算出字符所在的索引位置。这样避免了在遍历字符串时,每次都与数组中对比,看有没有存在这个字符,避免了遍历数组,使得时间复杂度变为了O(n),即只需遍历一次字符串即可。3. 代码import java.util.HashMap;import java原创 2022-04-08 16:03:14 · 473 阅读 · 0 评论 -
剑指offfer10:斐波那契数列
1. 题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0F(1) = 1F(n) = F(n-1) + F(n-2)2. 代码public class ques10 { public static void main(String[] args) { int a = Fibonacci2(7); S...原创 2022-04-08 15:53:43 · 211 阅读 · 0 评论