[leetcode]大可日常打卡1

344Reverse String

class Solution {
    public String reverseString(String s) {
        if(s==null||s.length()==0){
            return s;
        }
		StringBuilder sb=new StringBuilder();
		for(int i=s.length()-1;i>=0;i--){
			sb.append(s.charAt(i));
		}
		return sb.toString();
    }
}

434Number of Segments in a String

class Solution {
    public int countSegments(String s) {
        if(s==null||s.length()==0){
            return 0;
        }
        String[] arr=s.split(" ");
        int count=0;
        for(int i=0;i<arr.length;i++){
        	if(arr[i].length()!=0){
        		count++;
        		System.out.println(i+":"+arr[i]);
        	}else{
        		continue;
        	}
        	
        }
        return count;
        
    }
}

617Merge Two Binary Trees

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        if(t1==null&&t2==null){
            return null;
        }
        if(t1==null){
            return t2;
        }
        if(t2==null){
            return t1;
        }
        TreeNode res=new TreeNode(t1.val+t2.val);
        
        res.left=mergeTrees(t1.left,t2.left);
        res.right=mergeTrees(t1.right,t2.right);
        return res;
    }
    
    
}

669Trim a Binary Search Tree

    如果是空,返回root;如果满足条件,那么当前节点要留着,左孩子等于左子树递归后返回的根节点的值,右孩子等于右子树递归后返回的根节点的值;如果不满足条件,小于L,那么直接把右子树递归的结果换成当前节点,大于R,把左子树递归的结果换成当前节点。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode trimBST(TreeNode root, int L, int R) {
        if(root==null){
            return root;
        }
        if(root.val>=L&&root.val<=R){
            root.left=trimBST(root.left,L,R);
            root.right=trimBST(root.right,L,R);
        }else if(root.val<L){
            
            root=trimBST(root.right,L,R);
        }else if(root.val>R){
            
            root=trimBST(root.left,L,R);
        }
        return root;
    }
}
832 Flipping an Image
import java.util.Stack;
class Solution {
    public int[][] flipAndInvertImage(int[][] A) {
        if(A==null){
            return null;
        }
        
        for(int i=0;i<A.length;i++){
            Stack<Integer> stack=new Stack<Integer>();
            for(int j=0;j<A[0].length;j++){
                stack.add(oneZeroChange(A[i][j]));
            }
            for(int j=0;j<A[0].length;j++){
                A[i][j]=stack.pop();
            }
        }
        return A;
    }
    public int oneZeroChange(int x){
        if(x==1){
            return 0;
        }
        return 1;
    }
}

766Toeplitz Matrix

    看到的时候没思路,想遍历,但是发现如果是左下角和右上角的点的话,就不好操作,还得多加判断。

    思路:每一行对角线上的数的共同特征就是i-j都一样,建立一个hashmap,把一个对角线上的数的i-j当成key存进去,如果值有不一样的话,那么就说明不是Toeplitz矩阵。

import java.util.HashMap;
class Solution {
    public boolean isToeplitzMatrix(int[][] matrix) {
        if(matrix==null||matrix.length==0||matrix[0].length==0){
            return true;
        }
		HashMap<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<matrix.length;i++){ //行
            for(int j=0;j<matrix[0].length;j++){  //列
                if(!map.containsKey(i-j)){
                	map.put(i-j, matrix[i][j]);
                }else{
                	if(map.get(i-j)!=matrix[i][j]){
                		return false;
                	}
                }
            }
        }
		return true;
    }
}

猜你喜欢

转载自blog.csdn.net/hellodake/article/details/80852773