344. Reverse 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();
}
}
434. Number 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;
}
}
617. Merge 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;
}
}
669. Trim 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;
}
}
766. Toeplitz 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;
}
}