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

80 lines
2.3 KiB
Markdown

## 题目一
给定一个有序数组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