关注
/* * 1.字符串移位,给出字符串abc##dfg##gh,实现将所有#移至字符串串头。输出####abcdfggh(个人认为可以用后向移位,减少移位次数) */ static void moveStep(char[] str){ if(str==null||str.length<1) return ; int len=str.length; int s=len-1,e=len-1; for(int i=len-1;i>=0;i--){ if(str[i]=='#'){ int j=i; while(j>=0&&str[j]=='#')j--; //find successive # if(j<0) break; if(s==len-1)s=i;//first initial e=j; i=j+1; }else{ int j=i; while(j>=0&&str[j]!='#')j--; //find successive abcd... if(s==e)continue; else{ //fill abcd for(int k=i;k>j&&s>=0;k--){ str[s--]=str[k]; } //fill # for(int k=s;k>j;k--) str[k]='#'; } if(j<0)break; i=j+1; } } } /* * 给出一个二维矩阵,从(0,0)出发走到右下角,只能向右或向下走,找到一条路径,是这条路径上的总和最大。(个人认为使用动态规划或深度遍历) */ static int findMaxSum(int[][] nums,int row,int col){ if(row<1||col<1) return 0; int[][] dp=new int[row][col]; for(int i=0;i<row;i++){ if(i==0)dp[i][0]=nums[i][0]; else dp[i][0]=dp[i-1][0]+nums[i][0]; } for(int i=1;i<col;i++){ dp[0][i]=dp[0][i-1]+nums[0][i]; } for(int i=1;i<row;i++){ for(int j=1;j<col;j++){ dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1])+nums[i][j]; } } return dp[row-1][col-1]; } /* * 给出一颗二叉树,两个叶节点,找到这两个叶节点互连通的一条最短路径。(个人认为主要是找两个叶节点的最近公共祖先) */ static int depthMin(TreeNode root,TreeNode s,TreeNode t){ if(root==null||s==t) return 0; ArrayList<Integer> l1=new ArrayList<Integer>(); ArrayList<Integer> l2=new ArrayList<Integer>(); find(root,s,new ArrayList<Integer>(),l1); find(root,t,new ArrayList<Integer>(),l2); //find common int i=0,j=0; /*for(int k=0;k<l1.size();k++) System.out.print(l1.get(k)+"->"); System.out.println(); for(int k=0;k<l2.size();k++) System.out.print(l2.get(k)+"->"); System.out.println(); */ while(i<l1.size()&&j<l2.size()&&l1.get(i)==l2.get(j)){ i++; j++; } int dep=l1.size()-i+l2.size()-j+1; //System.out.println(i+" "+j+" "+dep); return dep; } private static void find(TreeNode root, TreeNode t, ArrayList<Integer> cur,ArrayList<Integer> res) { // TODO Auto-generated method stub //System.out.println(root.val+" "+t.val); if(root==null) return; if(t==root){ cur.add(root.val); res.addAll(new ArrayList<Integer>(cur)); return; }else{ cur.add(root.val); //.for(int k=0;k<cur.size();k++) // System.out.print(cur.get(k)+"->"); //System.out.println(); find(root.left,t,cur,res); find(root.right,t,cur,res); cur.remove(cur.size()-1); } }
查看原帖
点赞 2
相关推荐
06-02 15:17
门头沟学院 Java 点赞 评论 收藏
分享
07-01 17:23
武汉轻工大学 运营 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
30679次浏览 630人参与
# 机械人集合!你是什么工程师? #
15296次浏览 88人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
25895次浏览 210人参与
# 秋招什么时候开投比较合适? #
18855次浏览 274人参与
# 发工资后,你做的第一件事是什么 #
67534次浏览 229人参与
# 如何准备秋招 #
17971次浏览 348人参与
# 百度工作体验 #
219078次浏览 1957人参与
# 机械人与华为的爱恨情仇 #
116165次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25433次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73575次浏览 514人参与
# 不考虑转正,实习多久合适 #
31542次浏览 145人参与
# 影石Insta360求职进展汇总 #
123109次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57244次浏览 526人参与
# 24届的你们都什么时候入职? #
59933次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
255945次浏览 1479人参与
# 实习,不懂就问 #
41634次浏览 643人参与
# 你们公司几号发工资 #
20491次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102421次浏览 958人参与
# 每个月的工资都是怎么分配的? #
24846次浏览 408人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28973次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7404次浏览 130人参与