好久没发帖子了 (绝对不是因为我根本没收到面试)(绝对不是因为我笔试写的垃圾懒得分享)
群佬除我,我身边的ClassMate,我觉得是大佬的,我觉得是彩笔的,都有offer了,除了我,我太难了
第一题ac,我的代码真的牛,我自己都看不懂🤗
第二题**dfs超时40%(排个序不就过了?真的**)
第三题非人类略过
第四题leetcode刷过,稳稳拿下
public String add (String num1, String num2) { if(num1.length()==0) return num2; if(num2.length()==0) return num1; StringBuilder sb = new StringBuilder(); char[] char1 = num1.toCharArray(); char[] char2 = num2.toCharArray(); int point1 = num1.indexOf("."); int point2 = num2.indexOf("."); if(point1==-1||point2==-1){ if(point1==-1&&point2==-1){ point1=num1.length()-1;point2=num2.length()-1; int pre=0; while(point1>=0&&point2>=0){ int cur =Integer.valueOf(String.valueOf(char1[point1]))+Integer.valueOf(String.valueOf(char2[point2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point1--;point2--; } while(point1>=0){ int cur =Integer.valueOf(String.valueOf(char1[point1])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point1--; } while(point2>=0){ int cur =Integer.valueOf(String.valueOf(char2[point2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point2--; } if(pre==1) sb.append("1"); return sb.reverse().toString(); } if(point1!=-1){ sb.append(num1.substring(point1+1,num1.length())).reverse(); point1--; point2=num2.length()-1; }else if(point2!=-1){ sb.append(num2.substring(point2+1,num2.length())).reverse(); point2--; point1=num1.length()-1; } int pre=0; sb.append("."); while(point1>=0&&point2>=0){ int cur =Integer.valueOf(String.valueOf(char1[point1]))+Integer.valueOf(String.valueOf(char2[point2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point1--;point2--; } while(point1>=0){ int cur =Integer.valueOf(String.valueOf(char1[point1])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point1--; } while(point2>=0){ int cur =Integer.valueOf(String.valueOf(char2[point2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point2--; } if(pre==1) sb.append("1"); return sb.reverse().toString(); }else{ int pre=0; int len1=num1.length()-1-point1; int len2=num2.length()-1-point2; int fpoint1=num1.length()-1; int fpoint2=num2.length()-1; if(len1>len2){ while(len1>len2){ sb.append(String.valueOf(char1[fpoint1])); len1--; fpoint1--; } }else if(len2>len1){ while(len2>len1){ sb.append(String.valueOf(char2[fpoint2])); len2--; fpoint2--; } } while(fpoint1>point1&&fpoint2>point2){ int cur =Integer.valueOf(String.valueOf(char1[fpoint1]))+Integer.valueOf(String.valueOf(char2[fpoint2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; fpoint1--;fpoint2--; } while(fpoint1>point1){ int cur =Integer.valueOf(String.valueOf(char1[fpoint1])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; fpoint1--; } while(fpoint2>point2){ int cur =Integer.valueOf(String.valueOf(char2[fpoint2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; fpoint2--; } sb.append("."); point1 = num1.indexOf(".")-1; point2 = num2.indexOf(".")-1; while(point1>=0&&point2>=0){ int cur =Integer.valueOf(String.valueOf(char1[point1]))+Integer.valueOf(String.valueOf(char2[point2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point1--;point2--; } while(point1>=0){ int cur =Integer.valueOf(String.valueOf(char1[point1])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point1--; } while(point2>=0){ int cur =Integer.valueOf(String.valueOf(char2[point2])); sb.append((cur+pre)%9); if(cur+pre>=9){ pre=1; }else pre=0; point2--; } if(pre==1) sb.append("1"); return sb.reverse().toString(); } }
import java.util.Arrays; import java.util.Scanner; public class Main2 { static long ret=0; static int M; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] wi=new int[N]; int[] ti=new int[N]; for (int i = 0; i < N; i++) { wi[i]=sc.nextInt(); } for (int i = 0; i < N; i++) { ti[i]=sc.nextInt(); } Arrays.sort(wi); Arrays.sort(ti); M=sc.nextInt(); fenpei(wi,ti,0,new boolean[N]); System.out.println(ret); } public static void fenpei(int[] wi,int[] ti,int num,boolean[] visit){ boolean b=false; int N = ti.length; if(num==N){ ret=(ret+1)%M; return; } for (int i = 0; i < N; i++) { if(!visit[i]&&wi[num]>=ti[i]){ visit[i]=true; b=true; fenpei(wi,ti,num+1,visit); visit[i]=false; } if(wi[num]<ti[i]) break; } if(!b) return; } }
public static int pileBox(int[][] boxes) { int[] dp=new int[boxes.length]; Arrays.sort(boxes,(o1, o2)->o1[0]==o2[0]?o1[1]==o2[1]?o2[2]-o1[2]:o2[1]-o1[1]:o1[0]-o2[0]); //对长进行正序排列,长相等则宽高逆序排列,这样的好处是可以省去长的条件 Arrays.fill(dp,1); int res=0; for (int i = 1; i <boxes.length ; i++) { int curWid=boxes[i][1],curHei=boxes[i][2]; for (int j = 0; j < i; j++) { if(curWid>boxes[j][1]&&curHei>boxes[j][2]) dp[i]=Math.max(dp[i],1+dp[j]); } res=Math.max(res,dp[i]); } return res; }
全部评论
(4) 回帖