【剑指offer】java实现
柠檬大大
IT热爱者,博客热爱者,服务器开发热爱者,默默无闻的小人物。(*^▽^*)
展开
-
【剑指offer】【13】二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路考虑二进制数字的特性,只有0和1,运用& 运算/** *输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 * @author admin * */public class test13 { public static void main(String[] a...原创 2019-12-10 15:09:28 · 112 阅读 · 0 评论 -
【剑指offer】【12】矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路参考跳台阶,可以发现可以转化为斐波那契数列解题思路/** * 矩形覆盖 * @author admin * */public class test12 { public static void main(String[]...原创 2019-10-21 18:01:50 · 112 阅读 · 0 评论 -
【剑指offer】【11】变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路递归和循环/** * 变态跳台阶 * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 * f(1) = 1 * f(2) = f(2-1) + f(2-2) * f(...原创 2019-10-21 17:52:58 · 110 阅读 · 0 评论 -
【剑指offer】【10】跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解题思路这道题是一道找规律题,需要稍加思考转化,f(1) = 1,f(2) = 2,f(3) = 3,f(4) = 5,考虑到一次可以跳1级,也可以跳2级,假设5级的台阶,跳1级的话就等于f(4)中的跳法,跳2级的话就是f(3)中的跳法,得到f(5) = f(...原创 2019-10-12 14:48:17 · 89 阅读 · 0 评论 -
【剑指offer】【09】斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解题思路思路1:递归思路2:循环/** * 斐波那契数列 * * @author admin * */public class test09 { public static void main(String[] args) {...原创 2019-10-09 20:21:31 · 151 阅读 · 0 评论 -
【剑指offer】【08】旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。注意点1:数组长度为0时2:数组非递减,例如{0,1,1,1,1}->{1,1,0,1,1}...原创 2019-10-09 15:45:57 · 91 阅读 · 0 评论 -
【剑指offer】【07】用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路思路1:stack2适中更新为最新的序列,stack1作为中转思路2:stack1只负责push,stack2负责pop,stack2不为空直接pop,为空就把stack1数据push到stack2中,可节省时间和空间import java.util.Stack;/**...原创 2019-09-28 17:59:51 · 130 阅读 · 0 评论 -
【剑指offer】【06】重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路根据前序序列和中序序列逐步分割出左右节点{1}根节点{2,4,7},{3,5,6,8}前序{4,7,2},{5,3,8,6}中序...原创 2019-09-28 15:09:00 · 145 阅读 · 0 评论 -
【剑指offer】【05】从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路一种方法是利用栈来实现;另外一种方法是利用三个指针把链表反转,关键是 r 指针保存断开的节点。import java.util.ArrayList;public class test05 { public static void main(String[] args) { ListN...原创 2019-09-27 15:19:32 · 122 阅读 · 0 评论 -
【剑指offer】【04】替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路① 从后往前遍历,用charAt判断每个字符② 遍历String字符串移动字符public class test04 { public static void main(String[] a...原创 2019-09-27 16:25:53 · 129 阅读 · 0 评论