80 lines
2.3 KiB
Markdown
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 |