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