每日算法--2023.2.22

1.剑指offer07--重建二叉树

class Solution {
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        return  dfsRebuildTree(preorder, 0, preorder.length-1, inorder, 0, inorder.length-1);
    }
    public TreeNode dfsRebuildTree(int[] preorder, int left, int right, int[] inorder, int l, int r){
        if(left>right){
            return null; 
        }
        int len = 0, target = preorder[left], i = l;
        for(;i<r;i++){
            if(inorder[i] == target){
                break;
            }
            len++;
        }
        TreeNode root = new TreeNode(target);
        root.left = dfsRebuildTree(preorder,left+1,left+len,inorder,i-len,i-1);
        root.right = dfsRebuildTree(preorder,left+len+1,right,inorder,i+1,r);
        return root;
        

    }
}

2.剑指offer06--从尾到头打印链表

class Solution {
    public int[] reversePrint(ListNode head) {
        List<Integer> tempContainer = new LinkedList<>();
        while(head!=null){
            tempContainer.add(head.val);
            head = head.next;
        }
        int n = tempContainer.size();
        int[] res = new int[n];
        for(int i = 0;i<n;i++){
            res[i] = tempContainer.get(i);
        }
        int p = 0, q = n-1;
        while(p<=q){
            int a = res[p], b = res[q];
            res[p++] = b;
            res[q--] = a;

        }
        return res;
    }
}

3.剑指offer05--替换空格

class Solution {
    public String replaceSpace(String s) {
        String res = new String();
        int n = s.length();
        for(int i = 0;i<n;i++){
            char cur = s.charAt(i);
            if(cur == ' '){
                res += "%20";
            }else{
                res += cur;
            } 
        } 
        return res;
    }
}

4.剑指offer04--二维数组中的查找

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if(matrix.length == 0){
            return false;
        }
        int m = matrix.length, n = matrix[0].length;
        int i = 0, j = n-1;
        while(i<m&&j>=0){
            if(matrix[i][j]>target){
                j = j-1;
            }else if(matrix[i][j]<target){
                i = i+1;
            }else{
                return true;
            }
        }
        return false;
    }
}

  

  

posted @ 2023-02-22 11:31  lyjps  阅读(19)  评论(0)    收藏  举报