快手笔试前三题,第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;
}
}

