剑指offer
KongJetLin
一步一脚印
展开
-
剑指offer刷题详细分析:part12:56题——60题
目录Number56:Number57:Number58:对称的二叉树Number59:Number60:把二叉树打印成为多行题目58 题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 分析:首先分析下这个对称二叉树,也就是一个二叉树中间对称。所以我们可以使用递归的思想,首先以根节点以及其左右...原创 2020-07-12 14:43:09 · 310 阅读 · 0 评论 -
剑指offer刷题详细分析:part11:51题——55题
目录Number51:Number52:Number53:Number54:字符流中第一个不重复的数字Number55:题目54 题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。方法1:使用HashMap实现 (不推荐) 分析:最直观的...原创 2020-07-12 14:42:45 · 337 阅读 · 0 评论 -
剑指offer刷题详细分析:part10:46题——50题
题目50 数组中重复的数字 题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。方法1:从第一个数字开始,对比后面的数字进行查找 这是最笨的方法,就是从第一...原创 2020-07-12 14:42:18 · 738 阅读 · 0 评论 -
剑指offer刷题详细分析:part9:41题——45题
目录Number41:Number42:和为S的2个数字Number43:Number44:Number45:题目42 题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。 分析:可以使用暴力遍历法(O(n^2)),不推荐...原创 2020-07-12 14:40:35 · 369 阅读 · 0 评论 -
剑指offer刷题详细分析:part8:36题——40题
目录Number36:Number37:Number38:Number39:Number40:数组中只出现一次的数字题目40 题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。方法1(推荐) 首先,对于异或运算,有如下规则:a^a = 0;a^0 = a;a^b^c = a^(b^c) = (a^b)^c...原创 2020-07-12 14:40:07 · 293 阅读 · 0 评论 -
剑指offer刷题详细分析:part7:31题——35题
目录Number31:整数中1出现的次数(从1到n整数中1出现的次数)Number32:Number33:Number34:Number35:题目31 整数中1出现的次数(从1到n整数中1出现的次数) 题目描述:求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,...原创 2020-07-12 14:39:47 · 269 阅读 · 0 评论 -
剑指offer刷题详细分析:part6:26题——30题
目录Number26:Number27:Number28:Number29:Number30:连续子数组的最大和题目30 连续子数组的最大和 题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负...原创 2020-07-12 14:39:08 · 206 阅读 · 0 评论 -
剑指offer刷题详细分析:part5:21题——25题
目录Number21:Number22:从上往下打印二叉树Number23:Number24:Number25:题目22 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 分析:这是二叉树的层序遍历(广度优先遍历),我们使用一个队列来辅助。public ArrayList<Integer> PrintFromTopToBottom(T...原创 2020-07-12 14:38:32 · 406 阅读 · 0 评论 -
剑指offer刷题详细分析:part4:16题——20题
目录Number16:Number17:Number18:Number19:Number20:包含min函数的栈题目20 题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:1)保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法;2)min方法的时间复杂度应该为O...原创 2020-07-12 14:38:03 · 250 阅读 · 0 评论 -
剑指offer刷题详细分析:part3:11题——15题
题目11 二进制中1的个数 题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。方法1:采取每一位与1然后右移的方法(推荐) 说明:使用无符号右移,不管输入的数是正数还是负数,都使用无符号右移,最高位都会补0。如果采用有符号的右移,负数最高位补1,导致while循环陷入死循环。public static int NumberOf1_1(int n) { ...原创 2020-07-12 14:37:05 · 219 阅读 · 0 评论 -
剑指offer刷题详细分析:part2:6题——10题
目录Number6:旋转数组的最小数字Number7:Number8:Number9:Number10:题目6 旋转数组的最小数字 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的...原创 2020-07-12 14:36:39 · 282 阅读 · 0 评论 -
剑指offer刷题详细分析:part1:1题——5题
题目1 二维数组查找 题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 分析:如下图,我们知道,只能从左下角或者从右上角入手,输入的数大于当前数就往右走,小于当前的数就往上走。 我们从左上角开始遍历,代码如下:public...原创 2020-07-12 14:36:13 · 294 阅读 · 0 评论