牛客刷题——剑指offer(第7期)

简介: 牛客刷题——剑指offer(第7期)

里面有非常多的题库 跟面经知识 真的非常良心了!!

JZ33 二叉搜索树的后序遍历序列🎈

题目描述🎈

48aec57cc5d1480c9113b98bcc44ae20.png

解题思路🎈

这道题目是输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同

这道题就是中序跟后序遍历满足栈的压入弹出序列关系

如果把中序序列当做栈的压入序列,那么后序序列是该栈的一个弹出序列

而二叉搜索树的中序是排序数组


代码详解🎈

import java.util.*;
public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        int arr[]=sequence.clone();
        Arrays.sort(arr);
        return IsPopOrder(arr,sequence);
    }
    boolean IsPopOrder(int []pushA,int []popA){
        if(pushA.length==0 || popA.length==0) return false;
        Stack<Integer> stack=new Stack<>();
        int popIndex=0; //用于标识弹出的序列的位置
        for(int x:pushA){
            stack.push(x);
            //如果栈不为空 并且栈顶元素等于弹出的序列
            while(stack.size()>0 && stack.peek()== popA[popIndex]){
                //出栈
                stack.pop();
                popIndex++;
            }
        }
        return stack.empty();
    }
}


JZ45 把数组排成最小的数🎈

题目描述🎈

f970c5ee1447400f8f18d67dd6d60f10.png

解题思路🎈

这道题的核心思路 就是排序

只考虑首字符的大小不可靠,但是如果字符串a拼接b的得到的数字大于b拼接a,那么肯定b应该排在a的前面,我们要就按照这样的次序将排序的比较重载就可以了

还要特判 空数组的情况

最后返回的是字符串的类型

只考虑首字符的大小不可靠,但是如果字符串a拼接b的得到的数字大于b拼接a,那么肯定b应该排在a的前面,我们要就按照这样的次序将排序的比较重载就可以了。


代码详解:

import java.util.*;
import java.util.ArrayList;
public class Solution {
    public String PrintMinNumber(int [] numbers) {
        int len=numbers.length;
         //特判空数组的情况
        if(numbers==null || numbers.length==0) return "";
         String []str= new String[len];
        for(int i=0;i<len;i++){
            str[i]=numbers[i]+"";
        }  
        Arrays.sort(str,new Comparator<String>(){
            public int compare(String s1,String s2){
                return (s1+s2).compareTo(s2+s1);
            }
        });
        StringBuilder res=new StringBuilder();
        //字符串叠加
        for(int i=0;i<str.length;i++){
            res.append(str[i]);
        }
         return res.toString();
    }
}



相关文章
|
7月前
|
算法
刷题之Leetcode34题(超级详细)
刷题之Leetcode34题(超级详细)
54 0
|
7月前
|
算法
leetcode1刷题打卡
leetcode1刷题打卡
42 0
|
7月前
刷题之Leetcode203题(超级详细)
刷题之Leetcode203题(超级详细)
35 0
刷题之Leetcode203题(超级详细)
|
7月前
|
索引
刷题之Leetcode707题(超级详细)
刷题之Leetcode707题(超级详细)
61 0
|
7月前
刷题之Leetcode844题(超级详细)
刷题之Leetcode844题(超级详细)
37 0
|
7月前
|
Java
刷题之Leetcode19题(超级详细)
刷题之Leetcode19题(超级详细)
41 0
|
7月前
|
人工智能
刷题之Leetcode977题(超级详细)
刷题之Leetcode977题(超级详细)
24 0
|
7月前
刷题之Leetcode27题(超级详细)
刷题之Leetcode27题(超级详细)
32 0
|
7月前
leetcode383刷题打卡
leetcode383刷题打卡
33 0
|
7月前
|
算法
leetcode28刷题打卡
leetcode28刷题打卡
32 0