1.題目描述
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
解題思路:
1.外循環遍歷每行元素
2.如果每行第一個元素<target,並且最後一個元素>target,在該行找
否則,退出該行,continue
3.確定元素所在行後,查找該元素簡單做法是暴力遍歷所有元素,但加一個判斷語句會跳過不必要的查詢比較。
public class Solution {
public static void main(String[] args) {
int arr[][]=new int[][]{{1,2,3},{2,4,6},{3,8,10},{4,9,12},{5,10,13}};
int target=10;
boolean t = Find(target, arr);
System.out.println("查詢結果爲:"+t);
}
public static boolean Find(int target, int array[][])
{
/*思路:1.外循環遍歷每行元素
2.如果每行第一個元素<target,並且最後一個元素>target,在該行找
否則,退出該行,continue
3.確定元素所在行後,查找該元素*/
for(int i=0;i< array.length;i++)
for(int j=0;j<array[i].length;j++)
{
if(array[i][0]<=target&&array[i][array[i].length-1]>=target)
{
if(array[i][j]==target)
{
return true;
}
}
else
continue;
}
//最後一個元素都沒能找到
return false;
}
}
2.題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
/*思路:
1.找到首次出現" "的下標位置
2.將該下標的元素進行替換
3.下標位置+1,從新的下標開始往後找首次出現" "的位置*/
public class Solution {
public static String replaceSpace(StringBuffer str) {
//這題考察的是stringBuffer和string的相互轉換
/*思路:
1.找到首次出現" "的下標位置
2.將該下標的元素進行替換
3.下標位置+1,從新的下標開始往後找首次出現" "的位置*/
int ind = str.indexOf(" ");
while (ind <= str.length()) {
if (str.indexOf(" ") >= 0)
//System.out.println("存在空字符串");
{
str = str.replace(ind, ind + 1, "%20");
int ind2 = ind + 2;
ind = str.indexOf(" ", ind2);
}
else
break;
}
return str.toString();
}
public static void main(String args[])
{
//創建一個string變量,轉爲stringBuffer,帶入方法中,將返回值轉爲sting類型
String str="We Are Happy!";
StringBuffer str2=new StringBuffer();
str2.append(str);
str=replaceSpace(str2);
System.out.println("新的字符串爲:"+str);
}
}
這個簡單的題讓我整複雜了,我用的是StringBuffer裏的替換字符串方法需要傳遞三個參數,實際上調用str.toString()方法將StringBuffer類對象轉爲String類,在調用String類的replaceAll(" ","%20")方法即可。
本題考察的是String類不能直接賦值給StringBuffer類
3.題目描述:輸入一個鏈表,按鏈表從尾到頭的順序返回一個ArrayList。
解題思路:
1.獲取鏈表的長度
2.創建數組list依次存放這些元素
3.創建數組list1,將list數組反過來存放在list1數組中
這裏它默認爲你創建了ListNode類
public class ListNode{
int val;
ListNode next =null;
ListNode(int val){
this.val=val;
}
}//相當於C語言的結構體
代碼如下:帶測試用例
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
/*解題思路:
1.獲取鏈表的長度
2.創建數組list依次存放這些元素
3.創建數組list1,將list數組反過來存放在list1數組中*/
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ListNode head=new ListNode(0);//頭指針
ArrayList list=new ArrayList();
ArrayList list1=new ArrayList();
head.next=listNode;
int len=0;
while(head.next!=null){
list.add(len,head.next.val);
len++;
head=head.next;
}
for (int i=0;i<len;i++)
{
list1.add(i,list.get(len-1-i));
}
return list1;
}
public static void main(String[] args) {
ListNode listNode=new ListNode(1);
ListNode listNode1=new ListNode(2);
ListNode listNode2=new ListNode(3);
listNode.next=listNode1;
listNode1.next=listNode2;
ArrayList temp=new ArrayList();
temp= printListFromTailToHead(listNode);
System.out.println(temp.get(0));
}
}
習慣了寫C語言的鏈表,結構體,寫這個真的很難受。。
加油吧,零基礎肯代碼的小菜雞。