剑指offer
xiaohan_whaleshark
小涵很懒,什么都没有写
展开
-
剑指offer(二) 替换空格
public class Solution { public String replaceSpace(StringBuffer str) { int i=0,index=str.indexOf(" ",0); int len = str.length(); StringBuffer sb = new StringBuffer(); ...原创 2019-03-29 15:43:06 · 199 阅读 · 0 评论 -
剑指offer题解目录(个人 / Java)
剑指offer题解目录〇〇一 ~ 一十一十一 ~ 二十二十一 ~ 三十三十一 ~ 四十四十一 ~ 五十五十一 ~ 六十六十一 ~ 六四〇〇一 ~ 一十(一) 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。(二) 替换空格请...原创 2019-08-09 15:59:48 · 372 阅读 · 0 评论 -
剑指offer(八) 跳台阶
跳台阶题目描述思路题解题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路这是一个递归求解的问题。我们先来分解父问题,不妨以最后一步跳了几级为划分依据:跳了1级,即青蛙先跳到第n-1级,再跳1级,该种情况下,跳法总数等同于青蛙跳到n-1级的跳法总数;跳了2级,即青蛙先跳到第n-2级,再跳2级,该种情况...原创 2019-08-09 16:40:58 · 289 阅读 · 0 评论 -
剑指offer(十二) 数值的整数次方
数值的整数次方题目描述思路题解反思题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路本题非常简单,是典型的用递归可以求解的问题。但是实际运行,需要考虑多种情况,比如底数为0、幂为负数,以及要关注递归的结束条件。判断底数是否为0, 若为0, 直接返回结果0;判断幂是否为负数,若为负数,则返回求解 底数的倒数的...原创 2019-08-09 16:21:12 · 284 阅读 · 0 评论 -
剑指offer(四) 重建二叉树
重建二叉树题目描述思路题解反思思路扩展题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路我们先来弄懂前序遍历和中序遍历的特点:前序遍历:根结点、左子树、右子树。中序遍历:左子树、根...原创 2019-08-09 15:42:35 · 246 阅读 · 0 评论 -
剑指offer(四十)数组中只出现一次的数字
数组中只出现一次的数字题目描述思路题解题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路这道题是典型的2n+2的问题,是2n+1问题的变种。我们不如先来看,如何解决2n+1的问题:一个整型数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。我们可以利用异或运算的性质来求解:0^a = a; ...原创 2019-08-06 18:57:03 · 193 阅读 · 0 评论 -
剑指offer(三十)连续子数组的最大和
连续子数组的最大和题目描述思路题解题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止...原创 2019-07-21 11:35:55 · 198 阅读 · 0 评论 -
剑指offer(六十一) 序列化二叉树
序列化二叉树题目描述思路题解题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路首先考虑将二叉树序列化,可以使用前序、中序、后序或者层次遍历的方式。在做这道题之前,我考虑到的是,至少需要两个遍历序列才能恢复出一颗二叉树。实则不然,如果要求输出的不是标准的前、中、后序遍历序列,我们完全可以对叶子节点进行标记。比如,叶子节点的左右子结点的值可以标记为"#",如此一来,我们也可以通...原创 2019-04-21 10:44:23 · 362 阅读 · 0 评论 -
剑指offer(三) 从尾到头打印链表
从尾到头打印链表 - 链表题目描述思路题解反思思路扩展题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。思路将链表中的数据依次读出并插入到ArrayList下标为0的位置,即可得到反转后的链表。题解/*** public class ListNode {* int val;* ListNode next = null;...原创 2019-04-03 16:37:48 · 281 阅读 · 0 评论 -
剑指offer(四十七) 求1+2+3+...+n
求1+2+3+...+n题目描述思路题解题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路看到这一题的第一反应,递归啊!再仔细看看限制条件,不能使用条件判断语句…那岂不是没办法递归中止了?这也太坑了!!仔细想想,只有逻辑运算能够解决这个问题了。主要是用到逻辑运算的以下特性:&am...原创 2019-04-12 15:25:43 · 318 阅读 · 0 评论 -
剑指offer(六) 旋转数组的最小数字
旋转数组的最小数字题目描述思路题解题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路既然要快速寻找最小数字,那么很容易就想到二分法来判断。那么如何判...原创 2019-04-12 15:06:54 · 285 阅读 · 0 评论 -
剑指offer(五) 用两个栈实现队列
用两个栈实现队列题目描述思路题解题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路此题与【Leetcode 232】 Implement Queue using Stacks - EASY类似,上篇中有详细的思路与图解。stack1用于存放倒序后的数据,stack2用于实现倒序。正常的思路是,每次push进入stack1之后,都将所有元...原创 2019-04-11 17:39:53 · 234 阅读 · 0 评论 -
剑指offer(一) 二维数组中的查找
【剑指offer 1】二维数组中的查找题目描述思路题解反思思路扩展题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路该二维数组是按照每行从左往右自增、每列从上到下递增的顺序排列的。所以可以考虑先从第一行开始遍历每一行的第一个元素,并...原创 2019-03-28 21:27:48 · 227 阅读 · 0 评论 -
剑指offer(十一) 二进制中1的个数
二进制中1的个数题目描述思路题解反思思路拓展题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路分情况讨论:正数n的二进制中1的个数,直接使用n不断对2取余转换为二进制数,余数为1的次数也就是二进制中1的个数。0的二进制中1的个数为0负数n的二进制是它的补码,其二进制的值恰好与-n-1(非负数)对应的二进制值相反(指0对1,1对0),所以求得-n-1的二...原创 2019-04-05 10:54:12 · 191 阅读 · 0 评论 -
剑指offer(七) 斐波那契数列
斐波那契数列题目描述思路题解题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39思路思路很简单,分为递归和迭代两种,在递归和迭代的区别与对比中有详细对比与介绍。题解递归解法:public class Solution { public int Fibonacci(int n) { ...原创 2019-04-04 20:31:34 · 264 阅读 · 0 评论 -
剑指offer(十四) 链表中倒数第k个结点
链表中倒数第k个结点题目思路思路1 - 栈思路2 - 循环数组题解题解1 - 栈题解2 - 循环数组反思题目输入一个链表,输出该链表中倒数第k个结点。思路思路1 - 栈先将所有结点入栈,然后出栈,第k个出栈的即为所求结点。思路2 - 循环数组定义大小为k的循环数组,循环赋值,直到所有结点赋值完毕。此时,循环数组中存储的值是倒数k个结点,最后一个结点的下一位对应的就是倒数第k个结...原创 2019-08-15 15:38:54 · 408 阅读 · 0 评论