剑指offer
二维数组中的查找
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class Solution {
public boolean Find(int target, int [][] array) {
//从二维数组的左下角开始,向上小,向左大
int i=array.length-1,j=0;
while(i>=0 && j<=array[0].length-1){
int now=array[i][j];
if(now>target){
i--;
}else if(now<target){
j++;
}else{
return true;
}
}
return false;
}
}替换空格
1
2
3
4
5
6
7
8
9
10
11
12
13public String replaceSpace(StringBuffer str) {
StringBuffer s=new StringBuffer();
for (int i=0;i<str.length();i++){
if(str.charAt(i)==' '){
s=s.append("%20");
}else{
s=s.append(str.charAt(i));
}
}
return s.toString();
}
//StringBuffer.append 28ms 9196k
//s=s+() 25ms 8920k
从尾到头打印链表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList l=new ArrayList<Integer>();
ArrayList r=new ArrayList<Integer>();
if(listNode==null){
return new ArrayList<>();
}
while(listNode!=null){
l.add(listNode.val);
listNode=listNode.next;
}
//如果用next判断null,注意最后一个节点的val;
for(int i=l.size()-1;i>=0;i--){
r.add(l.get(i));
}
return r;
}
//此题可以用递归/堆栈来实现
重建二叉树