2、请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题方法:
(1)暴力法,创建新的字符串stringbuffer,遍历字符串进行替换。
(2)双指针,扩大原stringbuffer大小,从后向前遍历,从旧的字符串stringbuffer的位置,拷贝到新的位置
3、输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
解题方法:利用栈实现
**解题方法:**举例发现规律,举例(2,3,4,5,6,7,8,9,10),发现2-6之间是切成两截是最大的,并且能对半的就对半,不能对半就按照最大对半截,例如5(2*3)。而大于7之后就是切成3截最大,并且是平均切相乘最大。
5、输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tqId=11157&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
解题方法:
递归实现左右树的遍历。数组拷贝
关键需要借助的接口,数组的拷贝
import java.util.Arrays;
Arrays.copyOfRange(src,start,end) // 左闭右开
6、输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题方法:
1、方法1:递归求左右子树高度,相减绝对值小于1.然后递归求左右子节点的值。
这样做,求高度会进行一次遍历。递归求是否是平衡二叉树又会遍历一次。遍历了两次
2、方法2:递归求是否是平衡二叉树时传递保存高度的对象,然后计算高度。只计算一次。多一个对象消耗。java是引用传递。