劍指offer 1-5

劍指offer 1-5

沒什麼好思想,都是暴力解答。

  1. 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
 public boolean Find(int target, int [][] array) {
        if(array==null) return false;
        if(array[0].length==0) return false;
        int row = array.length;
        int col = array[0].length;
        int i = 0,j = col-1;
        while(i<row&&j>=0&&j<col){
            if(target==array[i][j]) return true;
            else if(target<array[i][j]) j-=1;
            else i+=1;
        }
        return false;
    }
  1. 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
  public String replaceSpace(StringBuffer str) {
        if(str==null) return null;
        String str01 = str.toString();
       
        return str01.replaceAll(" ","%20");
        
    }
  1. 輸入一個鏈表,按鏈表從尾到頭的順序返回一個ArrayList。
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        
        ArrayList<Integer> result = new ArrayList<Integer>();
        ArrayList<Integer> tmp = new ArrayList<Integer>();
        if(listNode==null) return result;
        tmp.add(listNode.val);
        while(listNode.next!=null){
            listNode = listNode.next;
            tmp.add(listNode.val);
        }
        int size = tmp.size();
        for(int i=size-1;i>=0;i--){
            result.add(tmp.get(i));
        }
        return result;
    }

4.用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
    if(!stack2.isEmpty())
        return stack2.pop();
    else {
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }
    }
  1. 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。
    輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。
    例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。
    NOTE:給出的所有元素都大於0,若數組大小爲0,請返回0。
public int minNumberInRotateArray(int [] array) {
    int res = 0;
        if(array.length==0) return res;
        for(int i=0;i<array.length-1;i++)
            if(array[i+1]<array[i]) res = array[i+1];
        return res;
    }
發佈了30 篇原創文章 · 獲贊 0 · 訪問量 454
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章