一.二维数组的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public class Solution {
public static void main(String[] args) {
int[][] array = new int[][]{{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
boolean res = Find(7, array);
System.out.println(res);
}
//第一种方法
public static boolean Find(int target, int [][] array) {
if(array==null){
return false;
}
//列数
int colSize = array[0].length;
//行数
int rowSize = array.length;
//首先在第一行依次的往后查找
for(int i = 0 ; i < colSize; i++){
if(array[0][i]>target){
return false;
}
System.out.println("第"+(i+1)+"列");
//每一列的最后一个值为最大值
for(int j = 0 ;j < rowSize; j++){
System.out.println(array[j][i]);
if(array[rowSize-1][i] target){
max = mid - 1;
}else{
min = mid + 1;
}
}
}
}
return false;
}
//第二种方法
public boolean Find2(int target, int [][] array) {
if(array==null){
return false;
}
//列数
int colSize = array[0].length;
//行数
int rowSize = array.length;
int rowNum = rowSize-1;
int colNum = 0;
while(colNum=0){
if(target == array[rowNum][colNum]){
return true;
}else if(target>array[rowNum][colNum]){
colNum++;
}else {
rowNum--;
}
}
return false;
}
}
二.替换空格
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution2 {
//第一种方法 直接调API替换
public String replaceSpace(StringBuffer str) {
if (str==null || str.toString().equals(""))return str.toString();
for (int i = 0;i=0 && indexold
三.从头到尾打印链表
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
public class Solution3 {
public ArrayList printListFromTailToHead(ListNode listNode) {
//第一种方法 普通插入方法
ArrayList list = new ArrayList<>();
while(listNode!=null){
list.add(0, listNode.val);
listNode=listNode.next;
}
return list;
}
//第二种方法 stack
public ArrayList printListFromTailToHead2(ListNode listNode) {
Stack stack=new Stack();
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
ArrayList list=new ArrayList();
while(!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
//第三种方法 递归
public ArrayList printListFromTailToHead3(ListNode listNode) {
ArrayList list=new ArrayList();
addListNodeVal(list , listNode);
return list;
}
private void addListNodeVal(ArrayList list , ListNode listNode) {
if(listNode!=null){
if(listNode.next!=null){
addListNodeVal(list,listNode.next);
}
list.add(listNode.val);
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
}