剑指Offer
码路编
这个作者很懒,什么都没留下…
展开
-
剑指Offer-从尾到头打印链表
从尾到头打印链表 题目描述 输入一个链表,从尾到头打印链表每个节点的值。 分析 构造一个栈,先将节点依次放入栈里,再依次弹栈输出 代码 import java.util.ArrayList; import java.util.Stack; public class Solution { public static class ListNode { ...原创 2018-03-29 18:33:47 · 110 阅读 · 0 评论 -
剑指Offer-二维数组中的查找
二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 分析 该矩形从左往右依次增大,从上往下也依次增大,所有我们从最左下角开始比较,如果当前值比目标值还小的话,删除,直接从下一列的再开始依次比较。最后全部未找到,返回false。 代码 ...原创 2018-03-29 15:52:22 · 95 阅读 · 0 评论 -
剑指Offer-二叉树的镜像
二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 ...原创 2018-04-01 23:58:58 · 120 阅读 · 0 评论 -
剑指Offer-树的子结构
树的子结构 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 分析 主要思想是分别递归遍历左边和右边 代码 public static class TreeNode { int val = 0; TreeNode left = null; TreeNode right =...原创 2018-04-01 23:45:41 · 133 阅读 · 0 评论 -
剑指Offer-合并两个排序的链表
合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 分析 代码 public static class ListNode { int val; ListNode next = null; ListNode(int val) { ...原创 2018-03-31 18:14:21 · 115 阅读 · 0 评论 -
剑指Offer-反转链表
反转链表 题目描述 输入一个链表,反转链表后,输出链表的所有元素。 分析 代码 public static class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } ...原创 2018-03-31 17:59:34 · 90 阅读 · 0 评论 -
剑指Offer-链表中倒数第k个结点
链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。分析方法一: 先求得链表的总长度,然后再依次for循环遍历到len-k个即可方法二: 定义两个临时节点都指向头节点,第一个节点先走k步,然后两个节点一起走,最后当一个节点走到尾的时候,第二个节点便到了倒数第k个节点了。代码代码一:public static class ListNode { int val;原创 2018-03-31 17:47:53 · 86 阅读 · 0 评论 -
剑指Offer-调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。分析新建一个数组,来存放奇数,再把偶数移到末尾,最后再将临时数组中的元素复制到原数组中。代码public class Main { public static void main(Str原创 2018-03-31 17:20:16 · 86 阅读 · 0 评论 -
剑指Offer-数值的整数次方
数值的整数次方题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。分析代码public class Main { public static void main(String[] args) { // write your code here System.out.println(Power(2,7));原创 2018-03-31 17:11:04 · 103 阅读 · 0 评论 -
剑指Offer-二进制中1的个数
二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。分析方法一:利用Integer提供的转换为二进制的方法,然后再逐个统计1的个数。方法二:(牛客网上看到的,目前不太理解) 如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不原创 2018-03-31 16:47:02 · 119 阅读 · 0 评论 -
剑指Offer-矩形覆盖
矩形覆盖题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析这道题还是利用斐波拉切数列的思想来完成 代码public class Main { public static void main(String[] args) { // write your code here } pub原创 2018-03-31 16:36:36 · 138 阅读 · 0 评论 -
剑指Offer-变态跳台阶
变态跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法 分析 代码 package com.liuyao; public class Main { public static void main(String[] args) { // write...原创 2018-03-30 11:30:25 · 142 阅读 · 0 评论 -
剑指Offer-跳台阶
跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 分析 代码 package com.liuyao; public class Main { public static void main(String[] args) { System.out.prin...原创 2018-03-30 11:21:52 · 102 阅读 · 0 评论 -
剑指Offer-重建二叉树
重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 分析 代码 package com.liuyao; public class Main { ...原创 2018-03-30 11:09:13 · 112 阅读 · 0 评论 -
剑指Offer-斐波那契数列
斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 分析 利用公式 代码一 public static int Fibonacci(int n) { return (int) (Math.pow(2, -1 * n) * Math.pow(5, -0.5) * (Math.pow(1...原创 2018-03-30 00:15:35 · 86 阅读 · 0 评论 -
剑指Offer-连续子数组的最大和
连续子数组的最大和 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不...原创 2018-03-30 00:06:36 · 129 阅读 · 0 评论 -
剑指Offer-把数组排成最小的数
把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 分析 从给定的数中,拼出最小的数。任意两个数m,n,如果nm < mn,那么n应该排在m的前面,我们定义这种排序规则来对给定的数组中的任意两个数字进行比较,最后得到一个按照我...原创 2018-03-29 23:38:56 · 117 阅读 · 0 评论 -
剑指Offer-替换空格
替换空格 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 分析 利用StringBuffer,逐个扫描,为空格的时候,append(“%20”),否则为原字符 代码 public class Solution { public String repl...原创 2018-03-29 16:34:26 · 71 阅读 · 0 评论