
jianzhi offer
徐不依
这个作者很懒,什么都没留下…
展开
-
剑指offer--字符串替换空格
将一个字符串中的空格替换成 "%20"。Input:"We Are Happy"Output:"We%20Are%20Happy"这道题第一眼看好简单啊,直接遍历然后替换空格就好了啊, 唯一要注意是参数StringBuffer形式public class Solution { public String replaceSpace(StringBuffer str)...原创 2018-11-22 10:56:34 · 218 阅读 · 0 评论 -
剑指_二叉树序列化与反序列化
题目:首先我们介绍二叉树先序序列化的方式,假设序列化的结果字符串为str,初始时str等于空字符串。先序遍历二叉树,如果遇到空节点,就在str的末尾加上“#!”,“#”表示这个节点为空,节点值不存在,当然你也可以用其他的特殊字符,“!”表示一个值的结束。如果遇到不为空的节点,假设节点值为3,就在str的末尾加上“3!”。现在请你实现树的先序序列化。给定树的根结点root,请返回二叉树序列化后的字...转载 2018-12-30 01:15:45 · 137 阅读 · 0 评论 -
剑指_顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.分析好像以前在leetcode上做过这道题,思路很明确就是一圈一圈的递归,需要设置四个变量标志上下左右的边界,...原创 2019-02-23 23:26:55 · 158 阅读 · 0 评论 -
剑指_栈的压入弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)分析首先定义一个栈,从压栈序列和弹出序列首元素往后遍历,如果栈是空的就把压栈序...原创 2019-02-24 21:32:37 · 107 阅读 · 0 评论 -
剑指_滑动窗口的最大值
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, ...原创 2019-02-19 15:28:45 · 125 阅读 · 0 评论 -
剑指_用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。一个栈(如stack1)只能用来存,另一个栈(如stack2)只能用来取 每次必须有一个栈为空,即所有元素必须同时在一个栈中 当加入元素时首先检查stack2是否为空,如果不空将stack1中的元素全部倒入stack2,否则直接加入到栈1。加入之后再倒回是stack2 import ...原创 2019-02-19 15:59:36 · 128 阅读 · 0 评论 -
剑指_二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。用暴力搜索全部遍历一遍需要O(m*n).但是这样很容易超时。想到对于有一定规律的序列可以用二分法每次排除一些元素进行查找。但是这个二维数组不能直接使用二分法。可以每次将元素和每行最后一个元素比...原创 2019-02-19 16:29:17 · 113 阅读 · 0 评论 -
二叉树的遍历
1. 层次遍历从上往下打印出二叉树的每个节点,同层节点从左至右打印。用一个队列保存还未遍历的节点,每次到一个节点时在队尾加入左右节点。LinkedList实现了Deque和Queue接口。可以分别实现队列栈和双端队列继承Queue的方法:尾部添加(add, offer),查看头部元素(element,peek),删除头部元素(remove,poll) 继承Deque的方法: 对...原创 2019-02-25 10:03:21 · 190 阅读 · 0 评论 -
剑指_复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)分析:方法一 用HashMap保存random对应关系,第一遍复制链表,第二遍使用HashMap设置新链表的random对应关系。import java.uti...原创 2019-02-26 11:01:44 · 156 阅读 · 0 评论