1。 https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=190&&tqId=35203&rp=1&ru=/activity/oj&qru=/ta/job-code-high-rd/question-ranking

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
*/
func ReverseList( pHead *ListNode ) *ListNode {
    if pHead == nil {
        return nil
    }

    VirtualRoot := &ListNode{Val: 0}
    VirtualRoot.Next = pHead
    start := VirtualRoot.Next
    next  := start.Next
    for next != nil {
        start.Next = next.Next
        next.Next = VirtualRoot.Next
        VirtualRoot.Next = next
        next = start.Next
    }

    return VirtualRoot.Next
    // write code here
}
  1. https://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61?tpId=190&&tqId=35214&rp=1&ru=/activity/oj&qru=/ta/job-code-high-rd/question-ranking

    package main
    
    /**
     * lru design
     * @param operators int整型二维数组 the ops
     * @param k int整型 the k
     * @return int整型一维数组
    */
    func LRU( operators [][]int ,  k int ) []int {
        var list []int
        var result []int
        containMap := make(map[int]int)
        for _,item:= range operators{
            if item[0] == 1 {
                if _ ,ok :=containMap[item[1]];ok {
                    for i,value := range list{
                        if value == item[1] {
                            list = append(list[:1], list[2:]...)
                            i--
                        }
                    }
                }
                if len(list) >= k {
                    key := list[0]
                    delete(containMap, key)
                    list = list[1:]
                }
                containMap[item[1]] = item[2]
                list = append(list, item[1])
            }else if item[0] == 2 {
                _,ok := containMap[item[1]]
                if ok {
                    if _ ,ok :=containMap[item[1]];ok {
                        for i,value := range list{
                            if value == item[1] {
                                list = append(list[:i], list[i+1:]...)
                                i--
                            }
                        }
                    }
                    list = append(list, item[1])
                    result = append(result, containMap[item[1]])
                }else {
                    result = append(result,-1)
                }
            }
        }
        return result
        // write code here
    }
  2. https://www.nowcoder.com/practice/7bc4a1c7c371425d9faa9d1b511fe193?tpId=190&&tqId=35227&rp=1&ru=/activity/oj&qru=/ta/job-code-high-rd/question-ranking

    import java.util.*;
    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public boolean hasCycle(ListNode head) {
            List list = new ArrayList<ListNode>();
            while(head!=null){
                if(list.contains(head)){
                    return true;
                }else{
                    list.add(head);
                    head=head.next;
                }
            }
            return false;
        }
    }
  1. https://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    public class Solution {
        /**
         *
         * @param root TreeNode类 the root of binary tree
         * @return int整型二维数组
         */
        public  static ArrayList<Integer> list;
        public void  pre(TreeNode root){
            if (root != null){
                list.add(root.val);
                pre(root.left);
                pre(root.right);
            }
        }
        public void  mid(TreeNode root){
            if (root != null){
    
                mid(root.left);
                list.add(root.val);
                mid(root.right);
            }
        }
        public void  last(TreeNode root){
            if (root != null){
    
                last(root.left);
    
                last(root.right);
                list.add(root.val);
            }
        }
        public int[][] threeOrders (TreeNode root) {
            list = new ArrayList<>();
            TreeNode node = root;
            pre(node);
            node = root;
            mid(node);
            node = root;
            last(node);
    
            int[][] resultArray = new int[3][list.size()/3];
            int count = 0;
            for (int i = 0 ; i < 3;i ++){
                for (int j = 0 ; j < list.size() / 3 ; j++){
                    resultArray[i][j] = list.get(count);
                    count++;
                }
            }
            return resultArray;
    
            // write code here
        }
    }
  2. https://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    public class Finder {
        public static int findKth(int[] a, int n, int K) {
    
            return quickSort(a,0,n-1,K);
            // write code here
        }
        public static int quickSort(int[] a, int start,int end,int K){
            if(a.length > 0 && end > start ){
                int index =  patition(a, start, end,K);
                if (K -1 < index){
                    quickSort(a, start, index-1,K);
                    return a[K-1];
                }else if (K -1 > index) {
                    quickSort(a, index + 1, end, K);
                    return a[K-1];
                }else {
                    return a[index];
                }
    
            }
            return -1;
        }
        public static int patition(int[] a, int start , int end ,int K){
            int index  = a[start];
            while (start < end) {
                while (end > start && a[end] <= index) {
                    end--;
                }
                a[start] = a[end];
                while (start < end && a[start] >= index) {
                    start++;
                }
                a[end] = a[start];
            }
            a[start] = index;
            return start;
        }
    }
  3. https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * @param root TreeNode类
         * @return int整型ArrayList<ArrayList <>>
         */
        public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
            // write code here
    
            // write code here
            LinkedList<TreeNode> queueFather = new LinkedList<>();
            LinkedList<TreeNode> queueChild = new LinkedList<>();
    
            ArrayList<ArrayList<Integer>> resultList = new ArrayList<>();
            if (root != null) {
                queueFather.add(root);
            }
    
            while (queueFather.size() > 0 || queueChild.size() > 0) {
                ArrayList<Integer> rowList = new ArrayList<>();
                if (queueFather.size() > 0) {
                    while (queueFather.size() > 0) {
                        TreeNode node = queueFather.pop();
                        if (node.left != null) {
                            queueChild.add(node.left);
                        }
                        if (node.right != null) {
                            queueChild.add(node.right);
                        }
                        rowList.add(node.val);
                    }
                } else{
                    while (queueChild.size() > 0) {
                        TreeNode node = queueChild.pop();
                        if (node.left != null) {
                            queueFather.add(node.left);
                        }
                        if (node.right != null) {
                            queueFather.add(node.right);
                        }
                        rowList.add(node.val);
                    }
    
                }
                resultList.add(rowList);
    
            }
            return resultList;
        }
    }
  4. https://www.nowcoder.com/practice/a479a3f0c4554867b35356e0d57cf03d?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param l1 ListNode类 
         * @param l2 ListNode类 
         * @return ListNode类
         */
        public ListNode mergeTwoLists (ListNode l1, ListNode l2) {
            // write code here
            ListNode node = null;
            ListNode head = null;
            if(l1==null){
                return l2;
            }
            if(l2==null){
                return l1;
            }
            if(l1.val<l2.val){
                node = l1;
                l1=l1.next;
            }else{
                node = l2;
                l2=l2.next;
            }
            head = node;
            while(l1!=null&&l2!=null){
                if(l1.val < l2.val){
                    node.next = l1;
                    l1=l1.next;
                }else{
                    node.next = l2;
                    l2=l2.next;
                }
                node = node.next;
            }
            if(l1!=null){
                node.next = l1;
            }else{
                node.next = l2;
            }
    
            return head;
        }
    }
  5. https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
    
            ArrayList<Integer> arr=new ArrayList<>();
            if(input==null||input.length==0||k>input.length)
            {
                return arr;
            }
             Arrays.sort(input);
            for(int i=0 ;i<k ;i++)
            {
                arr.add(input[i]);
            }
            return arr;
        }
    }
  6. https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.Stack;
    
    public class Solution {
        Stack<Integer> stack1 = new Stack<Integer>();
        Stack<Integer> stack2 = new Stack<Integer>();
    
        public void push(int node) {
            Integer data;
            while(stack2.size()!=0)
            {
                stack1.push(stack2.pop());
            }
            stack2.push(node);
            while(stack1.size()!=0)
            {
                stack2.push(stack1.pop());
            }
        }
    
        public int pop() {
            if(stack2.size()!=0)
            {
                return stack2.pop();
            }
             return 0;
        }
    }
  7. https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    public static boolean isValid (String s) {
        // write code here
        Stack<Character> stack = new Stack<>();
        for (int i = 0 ; i < s.length() ; i++){
            if (s.charAt(i) == '('){
                stack.push(')');
            }else if (s.charAt(i) == '['){
                stack.push(']');
            }else if (s.charAt(i) == '{'){
                stack.push('}');
            }else if ( stack.isEmpty() || stack.pop() != s.charAt(i)){
                return false;
            }
        }
        return stack.isEmpty();
    }
}
```
  1. https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public int JumpFloor(int target) {
            if(target==0)
            {
                return 0;
            }
            if(target==1)
            {
                return 1;
            }
            if(target==2)
            {
                return 2;
            }
            return JumpFloor(target - 1)+JumpFloor(target - 2);
        }
    }
  2. https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param head ListNode类 
         * @param n int整型 
         * @return ListNode类
         */
        public ListNode removeNthFromEnd (ListNode head, int n) {
            // write code here
            int count = 0;
            ListNode root = head;
            while(root!=null){
                count++;
                root = root.next;
            }
            int index = count - n + 1;
            root = head;
            if(index != 1){
                while(root != null&& index<=count){
                    index--;
    
                    if(index == 1){
                        root.next = root.next.next;
                        break;
                    }
                    root = root.next;
                }
                return head;
            }else{
                return head.next;
            }
        }
    }
  3. https://www.nowcoder.com/practice/6e630519bf86480296d0f1c868d425ad?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    package main
    import . "nc_tools"
    /*
     * type ListNode struct{
     *   Val int
     *   Next *ListNode
     * }
     */
    
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
    */
    func detectCycle( head *ListNode ) *ListNode {
    
        if head == nil {
            return head
        }
        fast := head
        slow := head
    
        for fast != nil && slow != nil {
            if fast.Next != nil {
                fast = fast.Next.Next
            }else {
                return nil
            }
            slow = slow.Next
            if slow == fast {
                break
            }
        }
        if fast == nil || slow == nil {
            return nil
        }
        for fast != head {
            fast = fast.Next
            head = head.Next
        }
        return fast
        // write code here
    }
  4. https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param head ListNode类 
         * @param k int整型 
         * @return ListNode类
         */
        public static ListNode reverseKGroup(ListNode head, int k) {
            ListNode virtualRoot = new ListNode(0);
            virtualRoot.next = head;
            ListNode pre = virtualRoot;
            ListNode temp, start = pre.next;
    
            int count = 0;
            while (head != null) {
                count++;
                head = head.next;
            }
            for (int i = 0; i < count / k; i++) {
                for (int j = 1; j < k; j++) {
                    temp = start.next;
                    start.next = temp.next;
                    temp.next = pre.next;
                    pre.next = temp;
                }
                pre = start;
                start = start.next;
            }
            return virtualRoot.next;
        }
    }
  5. https://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param root TreeNode类 
         * @param o1 int整型 
         * @param o2 int整型 
         * @return int整型
         */
     public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
            // write code here
            if(root == null){
                return 0;
            }
            if(root.val == o1 || root.val == o2){
                return root.val;
            }
    
            int left = lowestCommonAncestor(root.left,o1,o2);
            int right= lowestCommonAncestor(root.right,o1,o2);
            if(left == 0){
                return right;
            }
            if(right == 0){
                return left;
            }
            return root.val;
        }
    
    }
  6. https://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public String LCS (String str1, String str2) {
            int m=str1.length(),n=str2.length();
            int[][] dp=new int[m+1][n+1];
            int max=0,index=0;
            for(int i=0;i<m;i++){
                for(int j=0;j<n;j++){
                    if(str1.charAt(i)==str2.charAt(j)){
                        dp[i+1][j+1]=dp[i][j]+1;
                        if(max<dp[i+1][j+1]){
                            max=dp[i+1][j+1];
                            index=i+1;
                        }
                    }
                }
            }
            return str1.substring(index-max,index);
        }
    }
  7. https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        // write code here‘
        int[] twoSum = new int[2];
        List<Integer> list = new ArrayList<Integer>();
        for(int i=0 ; i < numbers.length ; i++){
            list.add(numbers[i]);
        }
        for(int i=0 ; i < numbers.length ; i++){
            int index = target - numbers[i];
            if(list.contains(index)){
                index  = list.indexOf(index);
                if(index != i){
                                    if(index < i){
                    twoSum[0] = index + 1;
                    twoSum[1] = i + 1;
                }else{
                    twoSum[1] = index + 1;
                    twoSum[0] = i + 1;
                }
                break;
                }

            }
        }
        return twoSum;
    }
}
```
  1. https://www.nowcoder.com/practice/554aa508dd5d4fefbf0f86e5fe953abd?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * max sum of the subarray
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxsumofSubarray (int[] arr) {
        // write code here
        if(arr.length >= 1){
            int maxNumber = arr[0];
            int sum = arr[0];
            for(int i = 1 ; i < arr.length ; i++){
                sum += arr[i];
                if(sum < 0){
                    sum = 0;
                }
                if(maxNumber < sum){
                    maxNumber = sum;
                }
            }
            return maxNumber;
        }
        return 0;
    }
}
```
  1. https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public void merge(int A[], int m, int B[], int n) {
    
    
    
         if(B.length == 0){
            return;
        }else if(A.length == 0){
            A= B;
            return;
        }
        m--;
        n--;
        for(int i = m + n + 1  ; i >= 0 ; i-- ){
            if(m >=0 && n >= 0){
                if(A[m] > B[n]){
                    A[i] = A[m];
                    m--;
                }else{
                    A[i] = B[n];
                    n--;
                }
            }else if (n >= 0){
                A[i] = B[n];
                n--;
            }

        }
    }
}
```
  1. https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    import java.lang.*;
    
    
public class Solution {
      public static ListNode addInList (ListNode head1, ListNode head2) {
        Stack<ListNode> stack1 = new Stack<>();
        Stack<ListNode> stack2 = new Stack<>();
        while (head1 != null){
            stack1.push(head1);
            head1 = head1.next;
        }
        while (head2 != null){
            stack2.push(head2);
            head2 = head2.next;
        }
        int carryOver = 0;
        Stack<ListNode> minStack;
        Stack<ListNode> maxStack;
        maxStack = stack1.size() > stack2.size() ? stack1 : stack2;
        minStack = stack1.size() > stack2.size() ? stack2 : stack1;
        ListNode maxNode = null;
        while (!minStack.isEmpty() || !maxStack.isEmpty()){
            int minValue = 0;
            maxNode = maxStack.pop();
            if (!minStack.isEmpty()){
                minValue = minStack.pop().val;
            }
            int sum = maxNode.val + minValue + carryOver;
            carryOver = (sum - (sum % 10)) / 10;
            maxNode.val = sum % 10;
        }

        if (carryOver != 0){
            ListNode root = new ListNode(carryOver);
            root.next = maxNode;
            return root;
        }
        return maxNode;
    }

}
```
  1. https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     *
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public static int maxLength (int[] arr) {
        // write code here
        int maxLength = 0;
        LinkedList<Integer> list = new LinkedList<>();
        for(int i = 0 ; i < arr.length ; i++){
            while (list.contains(arr[i])){
                list.removeFirst();
            }
            list.add(arr[i]);
            if (list.size() > maxLength){
                maxLength = list.size();
            }
        }
        return maxLength;
    }

    public static void main(String[] args) {
        int[] arr = {2,2,3,4,3};
        System.out.println(maxLength(arr));
    }
}
```
  1. https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
            if(pHead1==null||pHead2==null)
            {
                return null;
            }
                 int lengthA=getListLength(pHead1);
                  int lengthB=getListLength(pHead2); 
            int pre=lengthA-lengthB;
                if(pre>0)
                {
    
                    while(pre>0)
                    {
                        pHead1=pHead1.next;
                        pre--;
                    }
                }
                else
                {
                      while(pre>0)
                    {
                        pHead2=pHead2.next;
                        pre--;
                    }
                }
                while(pHead1!=pHead2)
                {
                    pHead1=pHead1.next;
                    pHead2=pHead2.next;
                }
            return pHead1;
        }
        public int getListLength(ListNode head)
        {
            int length=0;
            if(head!=null)
            {
                length++;
            }
            ListNode root=head;
            while(root!=null)
            {
               root=root.next;
               length++;
            }
            return length;
        }
    }
  2. https://www.nowcoder.com/practice/9cf027bf54714ad889d4f30ff0ae5481?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * retrun the longest increasing subsequence
     * @param arr int整型一维数组 the array
     * @return int整型一维数组
     */
    public static int[] LIS (int[] arr) {
        // write code here
        List<Integer> result = new ArrayList<>();
        int[] maxLength = new int[arr.length];
        for (int i = 0 ; i<arr.length;i++ ){
            if (result.size() > 0){
                if (result.get(result.size()-1) < arr[i]){
                    result.add(arr[i]);
                    maxLength[i] = result.size();
                }else{
                    for (int j = result.size() - 1 ; j >= 0 ; j--){
                        if (result.get(j) < arr[i]){
                            result.set(j+1,arr[i]);
                            maxLength[i] = j + 2;
                            break;
                        }
                        if (j == 0){
                            result.set(0,arr[i]);
                            maxLength[i] = 1;
                        }
                    }
                }
            }else {
                result.add(arr[i]);
                maxLength[i] = 1;
            }
        }
        int[] resultArray = new int[result.size()];

        for (int i = arr.length -1 , j = result.size(); j > 0; i-- ){
            if (maxLength[i] == j){
                resultArray[--j] = arr[i];
            }
        }
        return resultArray;
    }


}
```
  1. https://www.nowcoder.com/practice/c3a6afee325e472386a1c4eb1ef987f3?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 反转字符串
     * @param str string字符串 
     * @return string字符串
     */
    public String solve (String str) {
        // write code here
        StringBuilder result = new StringBuilder();
        for (int i = str.length()-1 ; i >= 0 ; i--){
            result.append(str.charAt(i));
        }
        return result.toString();
    }
}
```
  1. https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public static String solve (String s, String t) {
        // write code here

        int maxLength = Math.max(s.length(), t.length());
        String maxString  = s.length() > t.length() ? s : t;
        int minLength = Math.min(s.length(), t.length());
        String minString  = s.length() > t.length() ? t : s;
        StringBuilder resultSum = new StringBuilder();
        int carryOver = 0;
        for(int i = maxLength-1 , j = minLength-1 ; i >=0 || j>= 0;i--,j--  ){
            int maxInt = Integer.parseInt(String.valueOf(maxString.charAt(i))) ;
            int minInt = 0;
            if(j >= 0){
                minInt =  Integer.parseInt(String.valueOf(minString.charAt(j)));
            }
            int sum = maxInt + minInt + carryOver;
            carryOver = (sum - (sum % 10))/10;
            resultSum.append(sum % 10);
        }
        resultSum.append(carryOver);
        resultSum = resultSum.reverse();
        for (int i = 0 ; i < resultSum.length() ; i++){
            if (resultSum.charAt(i) == '0'){
                resultSum.deleteCharAt(0);
            }else{
                break;
            }
        }
        return resultSum.toString();

    }

    public static void main(String[] args) {
        solve("733064366","459309139");
    }
}
```
  1. https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public static ArrayList<Integer> spiralOrder(int[][] matrix) {
            ArrayList<Integer> result = new ArrayList<>();
            if (matrix.length <= 0 || matrix[0].length <= 0){
                return result;
            }
            int row = 0 ,col = 0 , indexRow = matrix[0].length-1, indexCol = matrix.length-1;
            while (row <= indexRow && col <= indexCol){
                for (int i = row ; i <= indexRow ; i ++){
                    result.add(matrix[col][i]);
                }
                col++;
                for (int i = col ; i <= indexCol ; i++ ){
                    result.add(matrix[i][indexRow]);
                }
                indexRow--;
                if (col <= indexCol){
                    for (int i = indexRow ; i >= row   ; i--){
                        result.add(matrix[indexCol][i]);
                    }
                }
                indexCol--;
                if (row <= indexRow){
                    for (int i  = indexCol ; i >= col ;i--){
                        result.add(matrix[i][row]);
                    }
                }
                row++;
    
            }
            return result;
        }
    
    }
  2. https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public int Fibonacci(int n) {
            int sum=0;
            if(n==2)
            {
                return 1;
            }
            if(n==0)
            {
                return 0;
            }
            if(n==1)
            {
                return 1;
            }
            return Fibonacci(n-1)+Fibonacci(n-2);
        }
    }
  3. https://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    //num1,num2分别为长度为1的数组。传出参数
    //将num1[0],num2[0]设置为返回结果
    public class Solution {
        public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
            HashMap<Integer,Integer> map=new HashMap<>();
            ArrayList<Integer> list=new ArrayList<>();
            for(int i = 0 ;i <array.length;i++)
            {
                if(map.containsKey(array[i]))
                {
                    Integer count=map.get(array[i]);
                    count++;
                    map.put(array[i],count);
                }
                else
                {
                    map.put(array[i],1);
                }
            }
            for(int i =0;i<array.length;i++)
            {
                Integer count=map.get(array[i]);
                if(count==1)
                {
                    list.add(array[i]);
                    if(list.size()==0)
                    {
                        break;
                    }
                }
            }
            num1[0]=list.get(0);
            num2[0]=list.get(1);
    
        }
    }
  4. https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * return topK string
     * @param strings string字符串一维数组 strings
     * @param k int整型 the k
     * @return string字符串二维数组
     */
    public static String[][] topKstrings (String[] strings, int k) {
        // write code here
        String[][] resultArr = new String[k][];
        if (strings == null || strings.length == 0){
            return resultArr;
        }
        HashMap<String,Integer> map = new HashMap<>();
        for (int i = 0; i <  strings.length; i++) {
            map.put(strings[i],map.getOrDefault(strings[i],0)+1);
        }
        List<String>[] resultList = new List[strings.length+1];
        Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<String, Integer> item = iterator.next();
            List<String> list = resultList[item.getValue()];
            if (list == null){
                list = new ArrayList<>();
            }
            list.add(item.getKey());
            resultList[item.getValue()] = list;
        }
        int index = 0;
        for (int i = resultList.length-1; i >= 0 ; i--) {
            List<String> item = resultList[i];
            if (item != null){
                for (int j = 0; j < item.size()&&index < k; j++,index++) {
                    resultArr[index] = new String[]{
                        item.get(j) , String.valueOf(i)
                    };
                }
            }
        }
        return resultArr;
    }
}
```
  1. https://www.nowcoder.com/practice/47e1687126fa461e8a3aff8632aa5559?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
    
    
public class Solution {
    /**
     *
     * @param root TreeNode类
     * @return int整型ArrayList<ArrayList<>>
     */
    public static ArrayList<ArrayList<Integer>> zigzagLevelOrder (TreeNode root) {
        // write code here
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        if(root == null){
            return list;
        }
        Stack<TreeNode> stack1 = new Stack<>();
        Stack<TreeNode> stack2 = new Stack<>();
        stack1.push(root);
        while (stack1.size() != 0 || stack2.size() != 0){
            ArrayList<Integer> item = new ArrayList<>();
            if (stack1.isEmpty()){
                while (!stack2.isEmpty()){
                    TreeNode node = stack2.pop();
                    item.add(node.val);
                    if (node.right != null){
                        stack1.add(node.right);
                    }
                    if (node.left != null){
                        stack1.add(node.left);
                    }
                }
                list.add(item);
            }else {
                while (!stack1.isEmpty()){
                    TreeNode node = stack1.pop();
                    item.add(node.val);
                    if (node.left != null){
                        stack2.add(node.left);
                    }
                    if (node.right != null){
                        stack2.add(node.right);
                    }
                }
                list.add(item);
            }
        }
        return list;
    }


}
```
  1. https://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    public static  int sqrt (int x) {
        // write code here
        if(x == 0 || x == 1){
            return x;
        }
        long r = x;
        long result = r * r;
        while(x  < result){
            r = (r+x/r)/2;
            result = r * r;
        }
        return (int)r;
    }
}
```
  1. https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public static ArrayList<ArrayList<Integer>> resultList;
        public static ArrayList<ArrayList<Integer>> threeSum(int[] num) {
            resultList = new ArrayList<>();
            if (num.length == 0){
                return resultList;
            }
            Arrays.sort(num);
            dfs(num,new ArrayList<>(),0, 0);
            return resultList;
        }
        public static void dfs(int[] num, ArrayList<Integer> list,int sum, int index){
            if (list.size() >= 3 && sum != 0){
                return;
            }
            if ( index <= num.length && sum == 0 && !resultList.contains(list) && list.size() ==3){
                resultList.add(new ArrayList<>(list));
                return;
            }
            for (int i = index ; i < num.length ; i++){
                sum -= num[i];
                list.add(num[i]);
                dfs(num,list,sum, i+1);
                sum += num[i];
                list.remove(list.size() -1);
            }
        }
    }
  2. https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    public class Palindrome {
        public int getLongestPalindrome(String A, int n) {
            int maxCount = 0;
            for (int i = 1; i < A.length() ; i++){
                int left = i -1;
                int right = i +1;
                int count = 1;
                maxCount = getMaxCount(A, maxCount, left, right, count);
                left = i -1;
                right = i;
                count = 0;
                maxCount = getMaxCount(A, maxCount, left, right, count);
            }
            // write code here
            return maxCount;
        }
    
        private int getMaxCount(String A, int maxCount, int left, int right, int count) {
            while (left>= 0 && right <= A.length()-1 && A.charAt(left) == A.charAt(right)){
                left--;
                right++;
                count+=2;
            }
            maxCount = Math.max(count,maxCount);
            return maxCount;
        }
    }
  3. https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public ArrayList<String> list=new ArrayList<>();
        public ArrayList<String> Permutation(String str) {
            if(str.length()==1)
            {
                list.add(String.valueOf(str));
                return list;
            }
           if(str.length()!=0)
           {
               getAllString(str.toCharArray(),0);
           }
            Collections.sort(list);
            return list;
        }
        public void getAllString(char[] str,int index)
        {
            if(str.length-1<=index)
            {
                String str1=String.valueOf(str);
                if(!list.contains(str1))
                {
                    list.add(str1);
                }
            }
             else
             {
                for(int i = index;i<str.length;i++)
                {
                    swap(str,i,index);
                    getAllString(str,index+1);
                    swap(str,i,index);
                }
             }
    
    
    }
    public void swap(char[] str,int i ,int j)
    {
        char temp=str[i];
        str[i]=str[j];
        str[j]=temp;
    }
}
```
  1. https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    public class Solution {
    
        public ListNode mergeKLists(ArrayList<ListNode> lists) {
            ListNode root = null;
            ListNode head = null;
            List<Integer> sumList = new ArrayList<>();
            for(int i = 0 ; i < lists.size(); i++){
                ListNode node = lists.get(i);
                while (node != null){
                    sumList.add(node.val);
                    node = node.next;
                }
            }
            if (sumList.size() == 0){
                return null;
            }
            sumList.sort(Comparator.comparingInt(o -> o));
            head = new ListNode(sumList.get(0));
            root = head;
            for (int i = 1 ; i < sumList.size() ; i++){
                head.next = new ListNode(sumList.get(i));
                head = head.next;
            }
            return root;
        }
    }
  2. https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    /**
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        public void Mirror(TreeNode root) {
            if(root==null)
            {
                return;
            }
            TreeNode node=root.right;
            root.right=root.left;
            root.left=node;
            Mirror(root.left);
            Mirror(root.right);
        }
    }
  3. https://www.nowcoder.com/practice/8a2b2bf6c19b4f23a9bdb9b233eefa73?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    import java.lang.*;
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param root TreeNode类 
         * @return int整型
         */
    
        public int maxDepth (TreeNode root) {
            // write code here
            int hight = 0;
            return getDepth(root,hight);
    
    
    }
    public int getDepth(TreeNode root, int hight){
        if(root != null){
            hight++;
            return Math.max(getDepth(root.left, hight),getDepth(root.right, hight));
        }else{
            return hight;
        }
    }

}
```
  1. https://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param head ListNode类 the head node
         * @return ListNode类
         */
        public ListNode sortInList (ListNode head) {
            ListNode root = head;
            ListNode next = head;
            ListNode node = null;
            Comparator<ListNode> comparator = new Comparator<ListNode>() {
                @Override
                public int compare(ListNode o1, ListNode o2) {
                    return o1.val - o2.val;
                }
            };
            List<ListNode> list = new ArrayList<ListNode>();
            while(next != null){
                list.add(next);
                next = next.next;
            }
            list.sort(comparator);
            root = list.get(0);
            node = root;
            for(int i = 1 ; i < list.size() ;i++){
                root.next = list.get(i);
                root = root.next;
                if(i == list.size() -1){
                    root.next = null;
                }
            }
            return node;
        }
    }
  2. https://www.nowcoder.com/practice/c623426af02d4c189f92f2a99647bd34?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * return a array which include all ans for op3
     * @param op int整型二维数组 operator
     * @return int整型一维数组
     */

    public static ArrayList<Integer> stack;

    public  int[] getMinStack (int[][] op) {
        stack = new ArrayList<>();
        ArrayList<Integer> resultList = new ArrayList<>();
        for (int i = 0; i < op.length; i++) {
            if (op[i][0] == 1) {
                stack.add(op[i][1]);
            }else if (op[i][0] == 2) {
                stack.remove(stack.size()-1);
            }else{
                resultList.add(getMIn());
            }
        }
        int[] resultArray = new int[resultList.size()];
        for (int i = 0; i < resultArray.length; i++) {
            resultArray[i]  = resultList.get(i);
        }
        return resultArray;
    }
    public  Integer getMIn(){
        int minValue = Integer.MAX_VALUE;
        if (stack.size() > 0) {
            for (int i = 0; i < stack.size(); i++) {
                if (stack.get(i) < minValue) {
                    minValue = stack.get(i);
                }
            }
        }
        return minValue;
    }

}
```
  1. https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * max water
     * @param arr int整型一维数组 the array
     * @return long长整型
     */
    public static long maxWater (int[] arr) {

        int endIndex = arr.length - 1;
        int startIndex = 0;
        if(arr.length <= 2){
            return 0;
        }
        long end = arr[arr.length-1];
        long head = arr[0];

        long sum = 0;
        while (startIndex < endIndex){
            if (arr[startIndex] < arr[endIndex]){
                startIndex++;
                if (arr[startIndex] < head){
                    sum += (head- arr[startIndex]);
                }else {
                    head  = arr[startIndex];
                }
            }else {
                endIndex--;
                if (arr[endIndex] < end){
                    sum += (end - arr[endIndex]);
                }else {
                    end = arr[endIndex];
                }
            }

        }
        return sum;
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param head ListNode类 
         * @param m int整型 
         * @param n int整型 
         * @return ListNode类
         */
        public ListNode reverseBetween (ListNode head, int m, int n) {
            // write code here
            ListNode virtualRoot = new ListNode(0);
    
            virtualRoot.next = head;
            ListNode preStart = virtualRoot;
            ListNode start = head;
            for (int i = 1; i < m; i++) {
                preStart = start;
                start = start.next;
            }
            for (int i = 0; i < n - m; i++) {
                ListNode temp = start.next;
                start.next = temp.next;
                temp.next = preStart.next;
                preStart.next = temp;
            }
            return virtualRoot.next;
        }
    }
  2. https://www.nowcoder.com/practice/6fbe70f3a51d44fa9395cfc49694404f?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * find median in two sorted array
     * @param arr1 int整型一维数组 the array1
     * @param arr2 int整型一维数组 the array2
     * @return int整型
     */
    public static int findMedianinTwoSortedAray (int[] arr1, int[] arr2) {
        int count = arr1.length + arr2.length;
        if(count % 2 == 0){
            count = count/2;
        }else{
            count = count/2+1;
        }
        int i = 0 ,j = 0;
        while(i < arr1.length && j < arr2.length){
            if(arr1[i] < arr2[j]){
                if(count == 1){
                    return arr1[i];
                }
                i++;
            }else{
                if(count == 1){
                    return arr2[j];
                }
                j++;
            }
            count--;
        }
        if( i != arr1.length){
            return arr2[count+j];
        }else{
            return arr1[count+i];

        }
        // write code here
    }

    public static void main(String[] args) {
        int[] arr1 = {1,2,3,4};
        int[] arr2= {3,4,5,6};
        findMedianinTwoSortedAray(arr1,arr2);
    }
}
```
  1. https://www.nowcoder.com/practice/7cd13986c79d4d3a8d928d490db5d707?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     *
     * @param A int整型一维数组
     * @param target int整型
     * @return int整型
     */
    public static int search(int left, int right, int[] A, int target){
        int mid = 0;

        while(left <= right){
            mid = (left + right)/2;
            if(A[mid] == target){
                return mid;
            }else if(A[mid] < target){
                left = mid+1;
            }else{
                right = mid-1;
            }
        }
        return -1;
    }
    public static int search (int[] A, int target) {
        // write code here
        int index = -1;
        for(int i = 0 ; i < A.length-1 ; i++){
            if(A[i] > A[i+1]){
                index = i;
                break;
            }
        }
        if(index != -1){
            int result = search(0,index,A,target);
            if (result == -1){
                result = search(index+1,A.length-1,A,target);
            }
            return result;
        }else{
            return search(0,A.length-1,A,target);
        }
    }

}
```
  1. https://www.nowcoder.com/practice/2cc32b88fff94d7e8fd458b8c7b25ec1?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 进制转换
     * @param M int整型 给定整数
     * @param N int整型 转换到的进制
     * @return string字符串
     */
    public String solve (int M, int N) {
        String contrast = "0123456789ABCDEF";
        if (M == 0){
            return "0";
        }
        int number = M;
        if (number < 0){
            number = -number;
        }
        StringBuilder resultString = new StringBuilder();
        while (number > 0){
            resultString.append(contrast.charAt(number % N));
            number = number / N;
        }
        return M > 0 ? resultString.reverse().toString() : "-" + resultString.reverse().toString();
    }
}
```
  1. https://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param root TreeNode类 
         * @return int整型
         */
        public static int maxValue;
    
        public int maxPathSum (TreeNode root) {
            // write code here
            maxValue = Integer.MIN_VALUE;
            getMaxPathSum(root);
            return maxValue;
        }
        public int getMaxPathSum(TreeNode root){
            if(root != null){
                int maxLeftValue = Math.max(0,getMaxPathSum(root.left));
                int maxRightValue = Math.max(0,getMaxPathSum(root.right));
                maxValue = Math.max(maxValue,maxLeftValue + root.val + maxRightValue);
                return Math.max(maxLeftValue , maxRightValue)+ root.val;
            }
            return 0;
        }
    }
  2. https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param prices int整型一维数组 
     * @return int整型
     */
    public int maxProfit (int[] prices) {
        // write code here
        if(prices.length == 0){
            return 0;
        }
        int max = 0;
        int minValue = prices[0];
        for(int i = 0 ; i < prices.length ; i++){
            if(i != 0 && minValue > prices[0]){
                continue;
            }
            for(int j = i ; j < prices.length ; j++){

                if(prices[i] < prices[j]){
                    int count = prices[j] - prices[i];
                    if(count > max){
                        max = count;
                    }
                }
            }
        }
        return max;
    }

}
```
  1. https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param head ListNode类 
         * @return ListNode类
         */
        public static ListNode deleteDuplicates (ListNode head) {
            LinkedHashMap<Integer,Integer> map = new LinkedHashMap<>();
            ListNode virtualRoot = new ListNode(0);
            ListNode node = virtualRoot;
            while (head != null){
                if (map.containsKey(head.val)){
                    map.put(head.val,-1);
                }else {
                    map.put(head.val,1);
                }
                head = head.next;
            }
            Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();
            for (Map.Entry<Integer, Integer> item : map.entrySet()) {
                if (item.getValue() != -1) {
                    node.next = new ListNode(item.getKey());
                    node = node.next;
                }
            }
            return virtualRoot.next;
        }
    }
  2. https://www.nowcoder.com/practice/1a3de8b83d12437aa05694b90e02f47a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    public int reverse (int x) {

        int value = 0;
        int result = 0;
        while ( x != 0){
           value =  x % 10;
           x = x /10;
           result = value + result *10;
           if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE /10 && value > 7)){
               return 0;
            }
           if (result < Integer.MIN_VALUE /10 || (result == Integer.MIN_VALUE /10 && value < -8)){
               return 0;
           }
        }
        return result;
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode FindKthToTail(ListNode head,int k) {
            if(head==null)
            {
                return null;
            }
            if(k==1&&head.next==null)
            {
                return head;
            }
            int max=1;
            ListNode node=head;
            ListNode nodeHead=head;
            while((node=node.next)!=null)
            {
                max++;
            }
            node=head;
            if(max<k)
            {
                return null;
            }
            for(int i = 1 ;i <=max-k;i++)
            {
                nodeHead=nodeHead.next;
                node=nodeHead;
            }
            return node;
        }
    }
  2. https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
           public  int MoreThanHalfNum_Solution(int [] array) {
            if(array==null||array.length==0)
            {
                return 0;
            }
            int max=0;
            int index=array[0];
            Arrays.sort( array );
            for(int i = 0;i < array.length;i++)
            {
                if(index==array[i])
                {
                    max++;
                    if(max>array.length/2)
                    {
                        return index;
                    }
                }
                else
                {
                    max=1;
                    index=array[i];
                }
            }
            return 0;
        }
    
    }
  3. https://www.nowcoder.com/practice/8cc4f31432724b1f88201f7b721aa391?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * return the min number
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int minNumberdisappered (int[] arr) {
        // write code here
        int mix = 1;
        Arrays.sort(arr);
        List<Integer> list = new ArrayList<>();
        for(int i = 0 ; i < arr.length ; i++){
            list.add(arr[i]);
        }
        for(int i=1 ;; i++){
            if(!list.contains(i)){
                mix = i;
                break;
            }
        }
        return mix;
    }
}
```
  1. https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     *
     * @param n int整型
     * @return string字符串ArrayList
     */
    public static ArrayList<String> list = new ArrayList<>();
    public  static  ArrayList<String> generateParenthesis (int n) {
        // write code here
        list = new ArrayList<>();
        dfs("",0,0,n);
        return list;
    }
    public static void dfs(String str, int left ,int right, int n){
        if (n == right){
            list.add(str);
        }
        if (left < n ){
            dfs(str+"(",left +1,right,n);
        }
        if (left > right){
            dfs(str+")",left,right+1,n);
        }
    }

    public static void main(String[] args) {
        ArrayList<String> list = generateParenthesis(2);
        System.out.println(list.toString());
    }
}
```
  1. https://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        public int count;
        public TreeNode node=null;
        TreeNode KthNode(TreeNode pRoot, int k)
        {
            count=k;
             getK(pRoot);
            return node;
    
        }
        public void getK(TreeNode pRoot)
        {
            if(pRoot!=null)
            {
                getK(pRoot.left);
                count--;
                if(count==0)
                {
                    node= pRoot;
    
                }
                getK(pRoot.right);
            }
        }
    
    
    
}
```
  1. https://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    public class Rotate {
        public int[][] rotateMatrix(int[][] mat, int n) {
            // write code here
            int[][] resultMatrix = new int[n][n];
            for(int i = 0; i < n ; i++){
                for(int j = n-1,k= 0; j >= 0 ; j--, k++){
                    resultMatrix[i][k] = mat[j][i];
                }
            }
            return resultMatrix;
        }
    }
  2. https://www.nowcoder.com/practice/05fed41805ae4394ab6607d0d745c8e4?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * min edit cost
     * @param str1 string字符串 the string
     * @param str2 string字符串 the string
     * @param ic int整型 insert cost
     * @param dc int整型 delete cost
     * @param rc int整型 replace cost
     * @return int整型
     */
    public static int minEditCost (String str1, String str2, int ic, int dc, int rc) {
        int[][] count = new int[str1.length()+1][str2.length()+1];
        for (int i = 0; i < count.length; i++) {
            count[i][0] = i*dc;
        }
        for (int i = 0; i < count[0].length; i++) {
            count[0][i] = i*ic;
        }
        for (int i = 1; i < count.length; i++) {
            for (int j = 1; j < count[i].length; j++) {
                if (str1.charAt(i-1) == str2.charAt(j-1)) {
                    count[i][j] = count[i-1][j-1];
                }else{
                    count[i][j] =Math.min(count[i][j-1]+ ic,  Math.min(count[i-1][j-1] + rc, count[i-1][j] + dc));
                }
            }
        }
        return count[str1.length()][str2.length()];
        // write code here
    }

}
```
  1. https://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param head ListNode类 the head
         * @return bool布尔型
         */
        public boolean isPail (ListNode head) {
            // write code here
    
            Stack<ListNode> stack = new Stack<>();
            ListNode root = head;
            while(head != null){
                stack.push(head);
                head = head.next;
            }
            while(!stack.isEmpty() && root!= null){
                ListNode node = stack.pop();
                if(node.val != root.val){
                    return false;
                }
                root = root.next;
            }
            return true;
        }
    }
  2. https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         * 
         * @param head ListNode类 
         * @return ListNode类
         */
        public ListNode oddEvenList (ListNode head) {
            // write code here
            if(head == null){
                return head;
            }
    
            List<ListNode> list1 = new ArrayList<>();
            List<ListNode> list2 = new ArrayList<>();
            int count = 1;
            while(head != null){
                if(count % 2 == 0){
                    list2.add(head);
                }else{
                    list1.add(head);
                }
                head = head.next;
                count++;
            }
            head = new ListNode(list1.get(0).val);
            ListNode root = head;
            for(int i = 1 ; i < list1.size() ; i++){
                head.next = new ListNode(list1.get(i).val);
                head = head.next;
            }
            if(list2.size() != 0){
                for(int i = 0 ; i < list2.size() ; i++){
                    head.next = new ListNode(list2.get(i).val);
                    head = head.next;
                }
            }
            return root;
        }
    }
  3. https://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param root TreeNode类 
         * @return int整型
         */
        public static int sum = 0;
        public int  sumNumbers(TreeNode root) {
            // write code here
            int sum = 0;
            if( root == null){
                return sum;
            }
            return getSum(root,sum);
        }
    
        public  int getSum(TreeNode root,int sum){
            if(root == null ){
                return 0;
            }
            sum = root.val + sum * 10;
            if(root.left == null && root.right == null){
                return sum;
            }
    
            return getSum(root.left,sum) + getSum(root.right,sum);
    
        }
    }
  4. https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.ArrayList;
    import java.util.Comparator;
    
    
public class Solution {
    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        intervals.sort(Comparator.comparingInt(o -> o.start));
        for (int i = 0 ; i < intervals.size()-1 ; i++){

            Interval intervalPre = intervals.get(i);
            Interval intervalEnd = intervals.get(i+1);
            if (intervalPre.end >= intervalEnd.start){
                intervals.set(i,null);
                intervalEnd.start = intervalPre.start;

                if (intervalPre.end > intervalEnd.end){
                    intervalEnd.end = intervalPre.end;
                }
                intervals.set(i+1, intervalEnd);
            }

        }
        while(intervals.remove(null));

        return intervals;
    }


}
```
  1. https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public boolean result=true;
        public boolean IsBalanced_Solution(TreeNode root) { 
            if(root==null)
            {
                return true;
            }
            checkHigh(root);
            return result;
         }
         public int checkHigh(TreeNode root)
         {
             if(root==null)
             {
                 return 0;
             }
             int left=checkHigh(root.left);
             int right=checkHigh(root.right);
             if(Math.abs(left-right)>1)
             {
                 result=false;
             }
             return left>right?left+1:right+1;
         }
    }
  2. https://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.lang.reflect.Array;
    import java.util.*;
    public class Solution {
        public static  ArrayList<ArrayList<Integer>> sumList;
        public static ArrayList<ArrayList<Integer>> permuteUnique(int[] num) {
    
            sumList = new ArrayList<>();
    
            Arrays.sort(num);
            if (num.length == 0){
                return sumList;
            }
            dfs(num,new boolean[num.length],new ArrayList<>());
            return sumList;
        }
        public static void dfs(int[] num, boolean[] count, List<Integer> list){
    
            if(list.size() == num.length){
                sumList.add(new ArrayList<Integer>(list));
                return;
            }
    
            for (int i = 0 ; i < num.length ; i++){
                if(count[i]){
                    continue;
                }
                if (i > 0 && num[i] == num[i-1] && !count[i-1]){
                    continue;
                }
                list.add(num[i]);
                count[i] = true;
                dfs(num,count,list);
                count[i] = false;
                list.remove(list.size()-1);
            }
    
        }
    
        public static void main(String[] args) {
            int[] arr = {1,1,2};
            permuteUnique(arr);
            System.out.println(sumList.toString());
        }
    }
  3. https://www.nowcoder.com/practice/45fd68024a4c4e97a8d6c45fc61dc6ad?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
class Solution {
    /**
     *
     * @param s string字符串
     * @return int整型
     */
    public static int longestValidParentheses (String s) {
        // write code here
        Stack<Integer> stack = new Stack<>();
        int last = -1;
        int maxSize = 0;
        for(int i = 0 ; i < s.length() ; i++){
            if(s.charAt(i) == '('){
                stack.push(i);
            }else {
                if (stack.isEmpty()){
                    last = i;
                }else {
                    stack.pop();
                    if (stack.isEmpty()){
                        maxSize = Math.max(maxSize,i-last);
                    }else {
                        maxSize = Math.max(maxSize,i-stack.peek());
                    }
                }
            }
        }
        return maxSize;

    }
}
```
  1. https://www.nowcoder.com/practice/6d29638c85bb4ffd80c020fe244baf11?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * longest common subsequence
     * @param s1 string字符串 the string
     * @param s2 string字符串 the string
     * @return string字符串
     */
    public  static  String LCS (String s1, String s2) {
        int[][] count = new int[s1.length()+1][s2.length()+1];
        StringBuilder maxString = new StringBuilder();
        for (int i = 0 ; i < s1.length() ;i++){
            for (int j = 0 ; j  < s2.length() ; j++){
                if (s1.charAt(i) == s2.charAt(j)){
                    count[i+1][j+1] = count[i][j] +1;
                }else {
                    count[i+1][j+1] = Math.max(count[i+1][j],count[i][j+1]);
                }
            }
        }
        int index =1,indexRow =1,indexCol = 1;
        for (int i = 1 ; i <= s1.length() ;i++){
            for (int j = 1 ; j  <= s2.length() ; j++){
                if (index == count[i][j] && indexCol < i && indexRow < j){
                    maxString.append(s2.charAt(j-1));
                    indexRow = j;
                    indexCol = i;
                    index++;
                }
            }
        }
        return maxString.toString();
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/7d21b6be4c6b429bb92d219341c4f8bb?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     *
     * @param matrix int整型二维数组 the matrix
     * @return int整型
     */
    public static int minPathSum (int[][] matrix) {
        if (matrix.length == 0){
            return 0;
        }
        for (int i = 1 ;i < matrix[0].length ; i++){
            matrix[0][i] += matrix[0][i-1];
        }
        for (int i = 1; i < matrix.length ; i++){
            matrix[i][0] += matrix[i-1][0];
        }
        for (int i = 1 ; i < matrix.length ; i++){
            for (int j = 1 ; j < matrix[i].length ; j++){
                matrix[i][j] += Math.min(matrix[i][j-1],matrix[i-1][j]);
            }
        }
        return matrix[matrix.length-1][matrix[0].length-1];
    }


}
```
  1. https://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
         public static ArrayList<ArrayList<Integer>> resultList = new ArrayList<ArrayList<Integer>>();
        public  ArrayList<ArrayList<Integer>> pathSum (TreeNode root, int sum) {
            // write code here
    //         resultList = new ArrayList<ArrayList<Integer>>();
         resultList = new ArrayList<ArrayList<Integer>>();
    
            if(root == null){
                return resultList;
            }else{
                getPathSum(root,sum,new ArrayList<Integer>());
            }    
            return resultList;
        }
        public  void getPathSum(TreeNode root, int sum, ArrayList<Integer> list){
            if(root == null){
                return;
            }
    
            sum = sum - root.val;
    
            if(root.right == null && root.left == null && sum == 0){
                list.add(root.val);
                resultList.add(new ArrayList<Integer>(list));
                list.remove(list.size() - 1);
                return;
            }
    
             list.add(root.val);
            getPathSum(root.left,sum,list);
            getPathSum(root.right,sum,list);
                 list.remove(list.size() - 1);
        }
    }
  2. https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型一维数组 待排序的数组
     * @return int整型一维数组
     */
    public int[] MySort (int[] arr) {
        // write code here
         Arrays.sort(arr);
        return arr;
    }
}
```
  1. https://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public ArrayList<ArrayList<Integer>> combinationSum2(int[] num, int target) {
            ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
            ArrayList<Integer> list = new ArrayList<Integer>();
            boolean[] visited = new boolean[num.length];
            if(num == null || num.length <= 0) return null;
            Arrays.sort(num);
            dfs(num,visited,target,0,list,result);
            return result;
        }
        public void dfs(int[] num,boolean[] visited, int diff, int start, ArrayList<Integer> list, ArrayList<ArrayList<Integer>> result){
            if(diff == 0 && !result.contains(list)){
                result.add(new ArrayList<>(list));
                return;
            }
            for (int i = start; i < num.length; i++) {
                if(diff < num[i]) return ;   
    
                    list.add(num[i]);         
    
                    dfs(num,visited,diff-num[i],i+1,list,result);
                    list.remove(list.size()-1);        
    
    
        }
    }
}
```
  1. https://www.nowcoder.com/practice/eac1c953170243338f941959146ac4bf?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * max increasing subsequence
     * @param arr int整型一维数组 the array
     * @return int整型
     */
        public static int MLS (int[] arr) {
            Arrays.sort(arr);
            int count = 1;
            int maxCount = 1;
            for (int i = 1 ; i < arr.length ; i ++){
                if (arr[i] - arr[i-1] == 1){
                    count++;
                }else if (arr[i] == arr[i-1]) {
                    continue;
                }else {
                    count = 1;
                }
                maxCount = Math.max(maxCount,count);
            }
            return maxCount;
            // write code here
        }
}
```
  1. https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param head ListNode类 
         * @return ListNode类
         */
        public static ListNode deleteDuplicates (ListNode head) {
            LinkedHashMap<Integer,Integer> map = new LinkedHashMap<>();
            ListNode root = head;
            while (root != null){
                map.put(root.val,map.getOrDefault(root.val,0)+1);
                root = root.next;
            }
            root = null;
            Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();
            while (iterator.hasNext()){
                Map.Entry<Integer, Integer> item = iterator.next();
                if (root == null){
                    root = new ListNode(item.getKey());
                    head = root;
                }else {
                    head.next = new ListNode(item.getKey());
                    head = head.next;
                }
            }
            return root;
            // write code here
        }
    
    }
  2. https://www.nowcoder.com/practice/f31fc6d3caf24e7f8b4deb5cd9b5fa97?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

     
import java.util.*;



public class Solution {
    /**
     *
     * @param root TreeNode类 the root
     * @return bool布尔型一维数组
     */

    public boolean[] judgeIt (TreeNode root) {
        TreeNode head = root;
        boolean[] result = new boolean[2];

        if(root == null){
           return result;
        }
        result[0] = true;
        ArrayList<Integer> list = new ArrayList<>();
        inorder(root,list);
        for (int i = 1; i < list.size(); i++) {
            if (list.get(i) <= list.get(i - 1)) {
                result[0] = false;
                break;
            }
        }
        root = head;
        result[1] = isCompleteTree(root);
        return result;
        // write code here
    }
    public boolean isCompleteTree(TreeNode root){
        LinkedList<TreeNode> list = new LinkedList<>();
        list.add(root);
        while (list.size() != 0){
            TreeNode treeNode = list.removeFirst();
            if (treeNode.left != null && treeNode.right == null){
                while (list.size() != 0){
                    TreeNode node = list.removeFirst();
                    if (node.left != null || node.right !=null){
                        return false;
                    }
                }
            }else if (treeNode.left == null && treeNode.right != null){
                return false;
            }
            if (treeNode.left != null){
                list.add(treeNode.left);
            }
            if (treeNode.right != null){
                list.add(treeNode.right);
            }
        }
        return true;
    }
    public void inorder(TreeNode root , ArrayList<Integer> list){
        if (root !=null){
            inorder(root.left,list);
            list.add(root.val);
            inorder(root.right,list);
        }
    }

}
```
  1. https://www.nowcoder.com/practice/1b0b7f371eae4204bc4a7570c84c2de1?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param root TreeNode类 
         * @return bool布尔型
         */
        public static boolean isSymmetric (TreeNode root) {
            if (root == null){
                return true;
            }
            return check(root,root);
            // write code here
        }
        public static boolean check(TreeNode left, TreeNode right){
            if (left == null && right == null){
                return true;
            }
            if (left == null || right == null){
                return false;
            }
            return left.val == right.val && check(left.right,right.left) && check(left.left,right.right);
        }
    }
  2. https://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public  void reorderList(ListNode head) {
            if(head == null || head.next == null){
                return ;
            }
            int count = 0;
            ListNode root = head;
            ListNode startHead = head;
            while (root != null) {
                root = root.next;
                count++;
            }
            if(count %2 == 0){
                count = count /2;
            }else{
                count = count /2 + 1;
            }
            root = head;
            while(count > 1){
                count--;
                root = root.next;
            }
            ListNode start = root.next;
            if(start == null){
                return ;
            }
            ListNode next = start.next;
            while (next != null){
                start.next = next.next;
                next.next = root.next;
                root.next = next;
                next = start.next;
            }
            ListNode reverse = root.next;
            root.next = null;
            ListNode reverseNext;
            while (head != null && reverse != null) {
                next = head.next;
                reverseNext = reverse.next;
                head.next = reverse;
                reverse.next = next;
                head = next;
                reverse = reverseNext;
            }
        }
    
    }
  3. https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.ArrayList;
    
    public class Solution {
        public  ArrayList<Integer> maxInWindows(int [] num, int size){
            int left  = 0;
            int right = size -1;
            ArrayList<Integer> list = new ArrayList<Integer>();
            if (num.length == 0 || size == 0){
                return list;
            }
            while(right < num.length){
                int maxNumber = num[left];
                for (int i = left+1 ; i  <= right ;i++){
                    if (num[i] > maxNumber) {
                        maxNumber = num[i];
                    }
                }
                list.add(maxNumber);
                right ++;
                left ++;
            }
            return list;
        }
    }
  4. https://www.nowcoder.com/practice/166eaff8439d4cd898e3ba933fbc6358?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param m int整型 
     * @param n int整型 
     * @return int整型
     */
    public static int uniquePaths (int m, int n) {
        if (m == 1|| n == 1){
            return 1;
        }
        return uniquePaths(m-1,n) + uniquePaths(m,n-1);
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/3afe6fabdb2c46ed98f06cfd9a20f2ce?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    public class Finder {
        public int[] findElement(int[][] mat, int n, int m, int x) {
            // write code here
            int[] index = new int[2];
    
            if(mat.length == 0){
                return index;
            }        
            for(int i = 0 ; i < mat.length ; i++){
                int left = 0;
                int right = mat[i].length-1;
                while(left <= right){
                    int mid = (left + right)/2;
                    if(mat[i][mid] == x){
                        index[0] = i;
                        index[1] = mid;
                        return index;
                    }else if(mat[i][mid] > x){
                        right = mid-1;
                    } else{
                        left = mid+1;
                    }
                }
            }
            return index;
        }
    
    }
  2. https://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param root TreeNode类 
         * @param sum int整型 
         * @return bool布尔型
         */
        public boolean hasPathSum (TreeNode root, int sum) {
            // write code here
    
            if(root != null){
                sum = sum - root.val;
                if(sum == 0){
                    if(root.left == null && root.right == null){
                        return true;
                    }
                    return false;
                }else{
                    return hasPathSum(root.left, sum) || hasPathSum(root. right, sum);
                }
    
            }
            return false;
    
        }
    }
  3. https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    //给出一组数字,返回该组数字的所有排列
    //例如:
    //[1,2,3]的所有排列如下
    //[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1].
    //(以数字在数组中的位置靠前为优先级,按字典序排列输出。)
    
    
    
    
public class Solution {
    public static ArrayList<ArrayList<Integer>> resultList;
    public static ArrayList<ArrayList<Integer>> permute(int[] num) {
        resultList = new ArrayList<>();
        Arrays.sort(num);
        if (num.length == 0){
            return resultList;
        }

        dfs(num,new ArrayList<>());
        return resultList;
    }
    public  static  void  dfs(int[] num,ArrayList<Integer> list){
        if (list.size() == num.length){
            if (!resultList.contains(list)){
                resultList.add(new ArrayList<>(list));
            }
        }
        if (list.size() > num.length-1){
            return;
        }
        for (int i = 0 ; i < num.length ; i++){
            if (!list.contains(num[i])){
                list.add(num[i]);
                dfs(num,list);
                list.remove(list.size()-1);
            }
        }
    }

    public static void main(String[] args) {
        int[] num = {1,2,3};
        permute(num);
        System.out.println(resultList.toString());
    }
}
```
  1. https://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public int FindGreatestSumOfSubArray(int[] array) {
            if(array.length==1)
            {
                return array[0];
            }
            int maxSum=array[0];
            int sum=0;
            for(int i = 0 ;i<array.length;i++)
            {
                sum+=array[i];
                if(sum>maxSum)
                {
                    maxSum=sum;
                }
                if(sum<0)
                {
                    sum=0;
                }
            }
            return maxSum;
        }
    }
  2. https://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param n int整型 
     * @param m int整型 
     * @return int整型
     */
    public int ysf (int n, int m) {
        // write code here
        int p=0;
        for(int i=2;i<=n;i++)
        {
            p=(p+m)%i;
        }
        return p+1;
    }
}
```
  1. https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public int InversePairs(int [] array) {
            if(array==null||array.length==0)
            {
                return 0;
            }
            int[] copy = new int[array.length];
            for(int i=0;i<array.length;i++)
            {
                copy[i] = array[i];
            }
            int count = InversePairsCore(array,copy,0,array.length-1);//数值过大求余
            return count;
    
        }
        private int InversePairsCore(int[] array,int[] copy,int low,int high)
        {
            if(low==high)
            {
                return 0;
            }
            int mid = (low+high)>>1;
            int leftCount = InversePairsCore(array,copy,low,mid)%1000000007;
            int rightCount = InversePairsCore(array,copy,mid+1,high)%1000000007;
            int count = 0;
            int i=mid;
            int j=high;
            int locCopy = high;
            while(i>=low&&j>mid)
            {
                if(array[i]>array[j])
                {
                    count += j-mid;
                    copy[locCopy--] = array[i--];
                    if(count>=1000000007)//数值过大求余
                    {
                        count%=1000000007;
                    }
                }
                else
                {
                    copy[locCopy--] = array[j--];
                }
            }
            for(;i>=low;i--)
            {
                copy[locCopy--]=array[i];
            }
            for(;j>mid;j--)
            {
                copy[locCopy--]=array[j];
            }
            for(int s=low;s<=high;s++)
            {
                array[s] = copy[s];
            }
            return (leftCount+rightCount+count)%1000000007;
        }
    }
  2. https://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    public static ArrayList<ArrayList<Integer>> sumList;

    public static ArrayList<ArrayList<Integer>> subsets(int[] S) {
        sumList = new ArrayList<>();
        Arrays.sort(S);
        for (int i = 0; i <= S.length; i++) {
            dfs(S, i, 0, new ArrayList<>());
        }
        return sumList;
    }

    public static void dfs(int[] arr, int k, int start, ArrayList<Integer> list) {
       if (k == 0) {
            sumList.add(new ArrayList<>(list));
        } else {

            for (int i = start; i < arr.length; i++) {
                list.add(arr[i]);
                dfs(arr, k - 1, i + 1, list);
                list.remove(list.size() - 1);
            }
        }

    }


}
```
  1. https://www.nowcoder.com/practice/9ce534c8132b4e189fd3130519420cde?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 找缺失数字
     * @param a int整型一维数组 给定的数字串
     * @return int整型
     */
    public static int solve (int[] a) {
        int sum = (a.length)  * (a.length+1) /2;
        for (int i = 0; i < a.length; i ++){
            sum-=a[i];
        }
        return sum;
    }
}
```
  1. https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
    
    
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {

        ArrayList<ArrayList<Integer>> list=new ArrayList<>();
        Queue<TreeNode> queue1=new LinkedList<>(  );
        Queue<TreeNode> queue2=new LinkedList<>(  );   
        if(pRoot==null)
        {
            return list;
        }
        int depth=1;
        queue1.add(pRoot);
        while(queue1.size()!=0||queue2.size()!=0)
        {
            ArrayList<Integer> item=new ArrayList<>();
            if(depth%2==1)
            {

                while(queue1.size()!=0)
                {
                    TreeNode node=queue1.poll();
                    if(node.left!=null)
                    {
                        queue2.add(node.left);
                    }
                    if(node.right!=null)
                    {
                        queue2.add(node.right);
                    }
                    item.add(node.val);
                }
            }
            else
            {
                while(queue2.size()!=0)
                {
                    TreeNode node=queue2.poll();

                    if(node.left!=null)
                    {
                        queue1.add(node.left);
                    }
                    if(node.right!=null)
                    {
                        queue1.add(node.right);
                    }
                    item.add(node.val);
                }

            }
            list.add(item);
            depth++;
        }
        return list;
    }

}
```
  1. https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public int NumberOf1(int n) {
            int count=0;
            while(n!=0)
            {
                count++;
                n=(n-1)&n;
            }
            return count;
        }
    }
  2. https://www.nowcoder.com/practice/5145394607ea4c5f8b25755718bfddba?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param matrix int整型二维数组 
     * @param target int整型 
     * @return bool布尔型
     */
    public boolean searchMatrix (int[][] matrix, int target) {
        for(int i = 0 ; i < matrix.length ;i++){
            if(getValue(matrix[i],target)){
                return true;
            }
        }
        return false;
        // write code here
    }
    public boolean getValue(int[] arr, int target){
        int left = 0;
        int right = arr.length-1;
        while(left <= right){
            int mid = (left + right)/2;
            if(arr[mid] == target){
                return true;
            }else if(arr[mid] < target){
                left = mid+1;
            }else{
                right = mid-1;
            }
        }
        return false;

    }
}
```
  1. https://www.nowcoder.com/practice/3911a20b3f8743058214ceaa099eeb45?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 最少货币数
     * @param arr int整型一维数组 the array
     * @param aim int整型 the target
     * @return int整型
     */
   public static int minMoney (int[] arr, int aim) {
        int[] count = new int[aim +1];
        Arrays.fill(count, aim + 1);
        count[0] = 0;
        for (int i =1;i<=aim;i++){
            for (int j = 0 ; j < arr.length ; j++){
                if (i >=arr[j]){
                    count[i] = Math.min(count[i-arr[j]] +1 , count[i]);
                }
            }
        }
        return count[aim] != aim+1 ? count[aim] :-1;
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/9e5e3c2603064829b0a0bbfca10594e9?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算最大收益
     * @param prices int整型一维数组 股票每一天的价格
     * @return int整型
     */
    public static int maxProfit (int[] prices) {
        int maxSum = 0;
        int index= prices[0];
        for(int i = 1 ; i < prices.length ; i++){
            if(prices[i] > index){
                maxSum += prices[i]-index;
                index = prices[i];
            }else{
                index = prices[i];
            }
        }
        return maxSum;
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/1af528f68adc4c20bf5d1456eddb080a?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 寻找最后的山峰
     * @param a int整型一维数组 
     * @return int整型
     */
    public static int solve (int[] a) {
        if (a.length == 0) {
            return 0;
        }
        int max = 0;
        if (a[a.length-1] >= a[a.length-2]){
            return a.length-1;
        }
        for (int i = 1 ; i < a.length-1; i++){
            if (a[i] >= a[i-1] && a[i] >= a[i+1]){
                if (max < i){
                    max = i;
                }
            }
        }
        return max;
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 
     * @param strs string字符串一维数组 
     * @return string字符串
     */
    public String longestCommonPrefix (String[] str) {
        StringBuilder result = new StringBuilder();
        int index = 0;
        if(str.length == 0){
            return result.toString();
        }
        boolean count = true;
        char item;
        while (count){
            if (str[0].length() == 0){
                return result.toString();
            }
            if (index >= str[0].length()){
                break;
            }else {
                item = str[0].charAt(index);
            }
            for (int i = 1 ; i < str.length ; i++){
                if (index >= str[i].length()){
                    count = false;;
                    break;
                }
                if (item != str[i].charAt(index)){
                    count = false;
                    break;
                }
            }
            if (count){
                result.append(item);
            }
            index++;
        }
        return result.toString();
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/e19927a8fd5d477794dac67096862042?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 旋转数组
     * @param n int整型 数组长度
     * @param m int整型 右移距离
     * @param a int整型一维数组 给定数组
     * @return int整型一维数组
     */
    public int[] solve (int n, int m, int[] a) {
        // write code here

        for(int i = 0 ; i < n ;i ++){
            int move =  m % n;
            int temp = a[move];
            a[move] = a[i];
            a[i] = temp;
        }
        return a;
    }
}
```
  1. https://www.nowcoder.com/practice/7a71a88cdf294ce6bdf54c899be967a2?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    public class Solution {
        /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         * 递增路径的最大长度
         * @param matrix int整型二维数组 描述矩阵的每个数
         * @return int整型
         */
        int[][] dp;
        int[] dirs = new int[]{0,1,0,-1,0};
        int m, n;
        public int solve (int[][] matrix) {
            // write code here
            int max = 1;
            m = matrix.length;
            n = matrix[0].length;
            dp = new int[m][n];
            for(int i = 0; i < m; i++) {
                for(int j = 0; j < n; j++) {
                    max = Math.max(max,  dfs(matrix, i, j));
                }
            }
            return max;
        }
    
        private int dfs(int[][] matrix, int x, int y) {
            if(dp[x][y] != 0) {
                return dp[x][y];
            }
    
            dp[x][y] = 1;
            for(int k = 0; k < 4; k++) {
                int nx = x + dirs[k];
                int ny = y + dirs[k+1];
                if(nx>=0 && nx<m && ny>=0 && ny<n && matrix[nx][ny] < matrix[x][y]) {
                    dp[x][y] = Math.max(dp[x][y], 1+dfs(matrix, nx, ny));
                }
            }
            return dp[x][y];
        }
    }
    
  2. https://www.nowcoder.com/practice/45327ae22b7b413ea21df13ee7d6429c?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.lang.reflect.Array;
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class Solution {
        public static boolean match(char[] str, char[] pattern) {
            if (str.length == 0 && pattern.length ==0){
                return true;
            }
            if (str.length == 0 && pattern.length == 1 && pattern[0] == '.'){
                return false;
            }
            boolean[][] count = new boolean[str.length+1][pattern.length+1];
            count[0][0] = true;
            for (int i = 1;i <= pattern.length ;i++){
                if (pattern[i-1] == '*'){
                    if (i-2 >= 0){
                        count[0][i] = count[0][i-1] || count[0][i-2];
                    }else {
                        count[0][i] = count[0][i-1];
                    }
                }else if (pattern[i-1] == '.'){
                    count[0][i] = true;
                }
            }
            for (int i =1 ; i <= str.length ; i++){
                for (int j= 1; j <= pattern.length ;j++){
                    if (pattern[j-1] == str[i-1]){
                        count[i][j] = count[i-1][j-1];
                    }else if (pattern[j-1] == '*' ){
                        if (i -2 >= 0 && j-2 >= 0){
                            count[i][j] = count[i-1][j-1] || count[i-2][j-2];
                        }else {
                            count[i][j] = count[i-1][j-1] ;
                        }
                    }else {
                        count[i][j] = count[i-1][j] || count[i][j-1];
                    }
                }
            }
            if (str.length == 0){
                return count[0][pattern.length];
            }
            return  count[str.length][pattern.length];
        }
    
        public static void main(String[] args) {
            char[] arr1 = {'a'};
            char[] arr2 = {'.','*'};
            System.out.println(match(arr1,arr2));
        }
    
    
}
```
  1. https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {
    /**
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
    public int solve (String nums) {
        int[] count = new int[nums.length()+1] ;
        if(nums == null || nums.isEmpty() || nums.equals("0")){
            return 0;
        }
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 0 ; i < nums.length() ; i++){
            list.add(Integer.parseInt(String.valueOf(nums.charAt(i))));
        }
        count[0] = 1;
        for (int i = 1 ; i <= list.size(); i++){
            count[i] = list.get(i-1) != 0 ? count[i-1] : 0 ;
            if (i > 1){
               int number  = list.get(i-1) + list.get(i-2) * 10;
                if (number <= 26 && number >= 10){
                    count[i] += count[i-2];
                }
            }
        }
        return count[nums.length()];
        // write code here

    }
}
```
  1. https://www.nowcoder.com/practice/704c8388a82e42e58b7f5751ec943a11?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
public class Solution {


    public  int maxlenEqualK (int[] arr, int k) {
        int maxLength = 0;
        if (arr.length == 0){
            return 0;
        }
        for (int i = 0 ; i < arr.length ; i++){
            int sum = 0;
            if (arr.length - i < maxLength){
                break;
            }
            for (int j = i; j < arr.length ; j++){
                sum += arr[j];
                if (sum == k){
                    maxLength = Math.max(j-i+1,maxLength);
                }
            }
        }
        return maxLength;
        // write code here
    }
}
```
  1. https://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param t1 TreeNode类 
         * @param t2 TreeNode类 
         * @return TreeNode类
         */
        public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {
            if (t1 == null){
                return t2;
            }
            merge(t1,t2);
            return t1;
            // write code here
        }
        public void merge(TreeNode t1, TreeNode t2){
            if (t2 == null ){
                return;
            }
            if (t2.left != null && t1.left != null){
                merge(t1.left,t2.left);
            }
            if (t2.right != null && t1.right != null){
                merge(t1.right,t2.right);
            }
            if (t1 != null){
                t1.val += t2.val;
                if (t1.left == null){
                    t1.left = t2.left;
                }
                if (t1.right == null){
                    t1.right = t2.right;
                }
            }
        }
    }
  2. https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    /**
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    
{
return null;
}}
*/
public class Solution {
    public TreeNode rightNode=null;
    public TreeNode leftNode=null;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree==null)
        {
            return null;
        }
        else
        {
            Convert(pRootOfTree.left);
            if(leftNode==null)
            {
                leftNode =pRootOfTree;
                rightNode=pRootOfTree;
            }
            else
            {
                rightNode.right=pRootOfTree;
                pRootOfTree.left=rightNode;
                rightNode =pRootOfTree;
            }
                Convert(pRootOfTree.right);
        }
        return leftNode;
    }
}
```
  1. https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.ArrayList;
    public class Solution {
        public int minNumberInRotateArray(int [] array) {
            int min;
            if(array.length==0)
            {
                return 0;
            }
            else
            {
                min=array[0];
                for(int i=0;i<array.length;i++)
                {
                    if(min>array[i])
                    {
                        min=array[i];
                    }
                }
            }
            return min;
        }
    }
  2. https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public int GetNumberOfK(int [] array , int k) {
            if(array==null||array.length==0)
            {
                return 0;
            }
           HashMap<Integer,Integer> map=new HashMap<>();
           for(int i = 0 ; i < array.length;i++)
           {
               if(!map.containsKey(array[i]))
               {
                   map.put(array[i],1);
               }
               else
               {
                  Integer count= map.get(array[i]);
                   count++;
                   map.put(array[i],count);
               }
           }
           if(map.containsKey(k))
           {
               return map.get(k);
           }
           else
           {
               return 0;
           }
    
    
    }
}
```
  1. https://www.nowcoder.com/practice/512688d2ecf54414826f52df4e4b5693?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public static int count = 0;
        public int nodeNum(TreeNode head) {
            count = 0;
            if(head == null){
                return count;
            }
            order(head);
            return count;
        }
        public void  order(TreeNode node){
            if (node == null){
                return;
            }
            count++;
            order(node.left);
            order(node.right);
        }
    }
  2. https://www.nowcoder.com/practice/4582efa5ffe949cc80c136eeb78795d6?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    /*
     * public class TreeNode {
     *   int val = 0;
     *   TreeNode left = null;
     *   TreeNode right = null;
     * }
     */
    
    public class Solution {
        public static List<Integer> resultList;
        public int[] findError (TreeNode root) {
            resultList = new ArrayList<>();
            List<Integer> errorList = new ArrayList<>();
            inorder(root);
            List<Integer> compareList = new ArrayList<>(resultList);
            resultList.sort(Comparator.comparingInt(o -> o));
            for (int i = 0 ; i < compareList.size() ; i++){
                if (!compareList.get(i).equals(resultList.get(i))){
                    errorList.add(compareList.get(i));
                }
            }
            errorList.sort(Comparator.comparingInt(o -> o));
            return new int[]{
                    errorList.get(0),errorList.get(1)
            };
            // write code here
        }
        public  void  inorder(TreeNode node){
            if (node != null){
                inorder(node.left);
                resultList.add(node.val);
                inorder(node.right);
            }
        }
    }
  3. https://www.nowcoder.com/practice/9c158345c867466293fc413cff570356?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    public class Solution {
        public  double maxProduct(double[] arr) {
            double count = 1 ;
            double resultMax = arr[0];
            for(int i = 0 ; i < arr.length ;i++){
                count = arr[i];
                resultMax = Math.max(resultMax,count);
                for(int j = i+1 ; j < arr.length ; j++){
                    if (arr[j] != 0){
                        count *= arr[j];
                        resultMax = Math.max(resultMax,count);
                    }else {
                        break;
                    }
                }
            }
            return resultMax;
        }
    }
  4. https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    public class Solution {
        public void reOrderArray(int [] array) {
            List<Integer> q1=new ArrayList<>();
            List<Integer> q2=new ArrayList<>();
            for(int i=0;i<array.length;i++)
            {
                if((array[i]&1)==0)
                {
                    q1.add(array[i]);
                }
                else
                    q2.add(array[i]);
            }
            int m1=0,m2=0;
            for(int i=0;i<array.length;i++)
            {
                if(m2<q2.size())
                {
                    array[i]=q2.get(m2);
                    m2++;
                }
                else
                {
                    array[i]=q1.get(m1);
                    m1++;
                }
            }
        }
    }
  5. https://www.nowcoder.com/practice/aa03dff18376454c9d2e359163bf44b8?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
 public class Solution {
     /**
      * the number of 0
      * @param n long长整型 the number
      * @return long长整型
      */
     public long thenumberof0 (long n) {
         long count = 0;
         while (n > 0){
             count += n/5;
             n /=5;
         }
         return count;
         // write code here
     }

 }
 ```
  1. https://www.nowcoder.com/practice/fc897457408f4bbe9d3f87588f497729?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
 public class Solution {
     /**
      * 最大数
      * @param nums int整型一维数组 
      * @return string字符串
      */
     public String solve (int[] nums) {
         String[] strArr = new String[nums.length];
         for (int i = 0 ; i < nums.length ;i++){
             strArr[i]= String.valueOf(nums[i]);
         }
         Arrays.sort(strArr, (o1, o2) -> Integer.parseInt(o2+o1) - Integer.parseInt(o1+o2));
         StringBuilder maxString = new StringBuilder();
         if(strArr[0].equals( "0")){
             return "0";
         }
         for (int i = 0 ; i < strArr.length;i++){

             maxString.append(strArr[i]);
         }
         return maxString.toString();
         // write code here
     }
 }
 ```
  1. https://www.nowcoder.com/practice/23462ed010024fcabb7dbd3df57c715e?tpId=190&tags=&title=&diffculty=0&judgeStatus=0&rp=1

    import java.util.*;
    
    
 public class Solution {
     /**
      * 
      * @param grid int整型二维数组 
      * @return int整型
      */
     public static int minPathSum (int[][] grid) {

         int[][] count = new int[grid.length][grid[0].length];
         int sum = 0;
         for (int i = 0 ; i < grid.length ; i++){
             sum += grid[i][0];
             count[i][0] = sum;
         }
         sum = 0;
         for (int i = 0 ; i < grid[0].length ; i++){
             sum += grid[0][i];
             count[0][i] = sum;
         }
         for (int i = 1 ; i < grid.length ; i++){
             for (int j = 1 ; j < grid[i].length ;j++){
                 count[i][j] = Math.min(count[i][j-1],count[i-1][j])+grid[i][j];
             }
         }
         return count[grid.length-1][grid[0].length-1];
         // write code here
     }
 }
 ```
  1. https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee?tpId=190&&tqId=36047&rp=1&ru=/ta/job-code-high-rd&qru=/ta/job-code-high-rd/question-ranking
    import java.util.*;
    public class Solution {
    /**
    * return topK string
    * @param strings string字符串一维数组 strings
    * @param k int整型 the k
    * @return string字符串二维数组
    */
    public static String[][] topKstrings (String[] strings, int k) {
       // write code here
       String[][] resultArr = new String[k][];
       if (strings == null || strings.length == 0){
           return resultArr;
       }
       HashMap<String,Integer> map = new HashMap<>();
       for (int i = 0; i <  strings.length; i++) {
           map.put(strings[i],map.getOrDefault(strings[i],0)+1);
       }
       List<String>[] resultList = new List[strings.length+1];
       Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
       while (iterator.hasNext()){
           Map.Entry<String, Integer> item = iterator.next();
           List<String> list = resultList[item.getValue()];
           if (list == null){
               list = new ArrayList<>();
           }
           list.add(item.getKey());
           resultList[item.getValue()] = list;
       }
       int index = 0;
       for (int i = resultList.length-1; i >= 0 ; i--) {
           List<String> item = resultList[i];
           if (item != null){
                          Collections.sort(item);
               for (int j = 0; j < item.size()&&index < k; j++,index++) {
                   resultArr[index] = new String[]{
                       item.get(j) , String.valueOf(i)
                   };
               }
           }
       }
       return resultArr;
    }
    }