algorithm/算法/learn/大厂刷题/First.md

2.3 KiB

题目一

给定一个有序数组arr,代表坐落在X轴上的点 给定一个正数K,代表绳子的长度 返回绳子最多压中几个点? 即使绳子边缘处盖住点也算盖住

滑动窗口.

题目二

给定一个文件目录的路径 写一个函数统计这个目录下所有的文件数量并返回 隐藏文件也算,但是文件夹不算.

遍历树,

题目三

给定以个非负整数num, 如何不用循环语句, 返回>=num,并且离num最近的,2的某次方

    public int getTwo(int start){
        start--;
        // 用1填满加1
        start|=(start>>>1);
        start|=start|(start>>>2);
        start|=start|(start>>>4);
        start|=start|(start>>>8);
        start|=start|(start>>>16);
        return (start<0)?1:start+1;
    }

题目四

一个数组中只有两种字符'G'和'B' 可以让所有的G都放在左侧,所有的B都放在右侧 或者可以让所有的G都放在右侧,所有的B都放在左侧 但是只能在相邻字符之间进行交换操作, 返回至少需要交换几次

    public int minTime(String abc){
        char[] chars = abc.toCharArray();
        int gIndex=0;
        int gTimes=0;
        int bIndex=0;
        int bTimes=0;
        for (int i=0;i<chars.length;i++){
            if (chars[i]=='G'){
                // 让G在左边
                gTimes+=(i-gIndex);
                gIndex++;
                //gTimes+=i-(gIndex++);
            }else {
                // 让B在左边
                bTimes+=(i-bIndex);
                bIndex++;
                //bTimes+=i-(bIndex++);
            }
        }
        return Math.min(gTimes,bTimes);
    }

题目五

给定一个二维数组matrix,你可以从任何位置出发,走向上下左右四个方向, 返回能走出来的最长的递增链长度.

题目六

给定两个非负数组x和hp,长度都是n,再给定一个正数range x的有序,x[i]表示i号怪兽在x轴上的位置;hp[i]表示 i号怪兽的血量range表示法师如果站在x位置,用aoe技能打到的范围是:[x-range,x+range],被打到的每只怪兽 损失1点血量返回要把所有怪兽血量清空,至少需要释放多少次aoe技能.

题目七

给定一个数组arr,你可以在每个数字之前决定+或者-但是必须所有的数字都参与 在给定一个数target,请问最后算出target的方法数是多少个

1"23