快手笔试前三题,第4题没来得及全A,就不发了

第一题
思路:这题写太快题目我都忘了 囧
 public static int[] DistanceToHigher (int[] height) {
        // write code here
        int len =height.length;
        int flag[] = new int[len];
        flag[0] = 0;
        for (int i=len-1;i>0;i--){
            for (int j=i-1;j>=0;j--){
                if (height[j]>height[i]){
                    flag[i]=i-j;
                    break;
                }
                if (j==0){
                    flag[i]=0;
                }
            }
        }
        return flag;
    }

第二题
思路:从前往后,始终记录最大值first和次大值seconde,然后每次找到,新值 new,保证 new<first && new>=sec就可以了
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MainTest2 {
    public static void main(String[] args) throws IllegalAccessException, InstantiationException, IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String text[] = in.readLine().split(" ");
        int len =text.length;
        int a[] =new int [len];
        for (int i=0;i<len;i++){
            a[i]=Integer.parseInt(text[i]);
        }
        int first=0;
        int sec=0;
        int count=0;
        Boolean flag=true;
        for (int i=0;i<len;i++){
            if (a[i]<first&&a[i]>=sec){
                count++;
                System.out.print(i+" ");
            }
            if (a[i]>first){
                first=a[i];
                flag = false;
            }else {
                flag = true;
            }
            if (flag){
                if (a[i]>sec){
                    sec = a[i];
                }
            }
        }
        if (count==0){
            System.out.print(-1);
        }
    }



}
第三题
思路:这题,没啥巧妙的,就是模拟题,判断是还不是顺子,是不是豹子,然后输出。写题目的时候,忘记自定义排序的方法名子🤣,只能自己写个选排
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class Main3 {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String text[] = in.readLine().split(",");
        Map<Integer,Integer> map = new HashMap<>();
        for (int i=0;i<text.length;i++){
            int w1 = isShunzi(text[i]);
            int w2 = isbaozi(text[i]);
            if (w1<0&&w2<0){
                continue;
            }
            int w = w1>w2 ? w1:w2;
            map.put(i,w);
        }
        if (map.isEmpty()){
            System.out.print("null");
            return;
        }
        int max=0;
        int flag=-1;
        int leng=map.size();
        for (int j=0;j<leng;j++){
            for (int key:map.keySet()){
                if (map.get(key)>max){
                    flag=key;
                    max=map.get(key);
                }
            }
            map.remove(flag);
            max=0;
            if (j<leng-1){
                System.out.print(text[flag]+",");
            }else {
                System.out.print(text[flag]);
            }
            flag=-1;
        }

//        System.out.println(isShunzi("111123100000"));
    }
    public static int isShunzi(String text){
        int value=-1;
        int count=0;
        int max=-1;
        for (int i=3;i<=10;i++){
            if ((int)text.charAt(i)==max+1){
                max=(int)text.charAt(i);
                count++;
                if (count>value){
                    value=count;
                }
            }else {
                max=(int)text.charAt(i);
                count=1;
            }
        }
        max=20;
        count=0;
        for (int i=3;i<=10;i++){
            if ((int)text.charAt(i)==max-1){
                max=(int)text.charAt(i);
                count++;
                if (count>value){
                    value=count;
                }
            }else {
                max=(int)text.charAt(i);
                count=1;
            }
        }
        return value>=3?value*10:-1;
    }
    public static int isbaozi(String text){
        int value=-1;
        int count=0;
        int max=-1;
        for (int i=3;i<=10;i++){
            if ((int)text.charAt(i)==max){
                count++;
                if (count>value){
                    value=count;
                }
            }else {
                max=(int)text.charAt(i);
                count=1;
            }
        }
        if (value>=3){

            return value*10+5;
        }
        return -1;
    }
}



#快手笔试##快手##笔试题目#
全部评论
老哥 第四题 a了多少
1 回复 分享
发布于 2020-03-22 21:12

相关推荐

程序员鼠鼠_春招版:都很烂大街,rpc也基本没人问,考研吧,不然就包装一段实习再去
点赞 评论 收藏
分享
评论
2
6
分享

创作者周榜

更多
牛客网
牛客企业服务