1.二维数组中的查找
题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
如果在该数组中能找到一个参考数,当大于参考数时如何移动,小于参考数时如何移动
在本题的二维数组中,矩阵的左下角满足上面的条件,当查找目标>该矩阵左下角时,则查找目标应该向右移动,如果查找目标>该矩阵左下角时,则查找目标应该向上移动。
代码实现
public class Solution {
public boolean Find(int target, int [][] array) {
boolean flag=false;
int i=array.length-1;
int j=0;
while(i>=0&&j<array[i].length){
if(target==array[i][j]){
flag= true;
break;
}else if(target>array[i][j]){
j++;
}else{
i--;
}
}
return flag;
}
}
这里需要注意的一点是,循环尽量避免使用for(...),因为for(...)其中的++操作可能会出现重复加的问题,而且,也不需要二重循环进行全部遍历。
2.替换空格
题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
解题思路:
题目中给了一个函数签名,传入了一个StringBuffer对象,我们可以借助StringBuffer的append(),charAt(),length()函数来完成此功能。
代码实现
public class Solution {
public String replaceSpace(StringBuffer str) {
StringBuffer sb=new StringBuffer();
for(int i=0;i<str.length();i++){
if(str.charAt(i)!=' '){
sb.append(str.charAt(i));
}else{
sb.append("%20");
}
}
return sb.toString();
}
}
3.从尾到头打印链表
题目描述:
输出一个链表,从尾到头打印链表每个节点的值
解题思路:
我们可以借助堆栈来完成。
代码实现
public class ListNode{
int val;
ListNode next=null;
public ListNode(int val){
this.val=val;
}
}
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack=new Stack<Integer>();
ArrayList<Integer> list=new ArrayList<Integer>();
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
while(!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
}
代码实现
链接:https://www.nowcoder.com/questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035
来源:牛客网
public
class
Solution {
ArrayList<Integer> arrayList=
new
ArrayList<Integer>();
public
ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if
(listNode!=
null
){
this
.printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return
arrayList;
}
}