版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34645958/article/details/80998238
1.二维数组中的查找
(1)题目
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
(2)代码
public boolean Find(int target, int [][] array) {
int len = array.length-1;
int i = 0;
while (len >=0 && i < array[0].length){
if(array[len][i] > target){
len--;
}else if(array[len][i] < target){
i++;
}else{
return true;
}
}
return false;
}
(3)思路:从左下角开始查找,当要查找的数字大时,右移。要查找的数字小时,上移
2.替换空格
(1).题目
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
(2)代码
public String replaceSpace(StringBuffer str) {
if(str == null){
return null;
}
for (int i=0;i<str.length();i++){
char a = str.charAt(i);
if (a == ' '){
str.replace(i, i+1, "%20");
}
}
return str.toString();
}
3.从尾到头打印链表
(1)题目
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
(2)代码实现
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> al = new ArrayList<Integer>();
ListNode p = listNode;
addToList(al, p);
return al;
}
public static void addToList(ArrayList<Integer>al,ListNode n){
if(n!=null){
addToList(al, n.next);
al.add(n.val);
}
}
(3)思路:采用递归
4.重建二叉树
(1)题目
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
(2)代码实现