关注
/* * 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
相关推荐
查看14道真题和解析
点赞 评论 收藏
分享
牛客热帖
正在热议
# 拼多多求职进展汇总 #
233302次浏览 2030人参与
# 在职场上,你最讨厌什么样的同事 #
5712次浏览 81人参与
# 北方华创开奖 #
66002次浏览 549人参与
# 25届秋招总结 #
396535次浏览 3976人参与
# 哪些公司校招卡第一学历 #
32830次浏览 105人参与
# 地方国企笔面经互助 #
6536次浏览 16人参与
# 阿里云管培生offer #
58963次浏览 1748人参与
# ai智能作图 #
21360次浏览 262人参与
# 硬件兄弟们 甩出你的华为奖状 #
77944次浏览 625人参与
# 实习,投递多份简历没人回复怎么办 #
2435835次浏览 34703人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
4724次浏览 47人参与
# 实习与准备秋招该如何平衡 #
722790次浏览 8551人参与
# 我的实习求职记录 #
6121435次浏览 83953人参与
# 如果再来一次,你还会选择这个工作吗? #
110439次浏览 1109人参与
# 25届机械人为了秋招做了哪些准备? #
24989次浏览 355人参与
# 签了三方后想毁约怎么办 #
18563次浏览 111人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
9955次浏览 213人参与
# 机械求职避坑tips #
22154次浏览 240人参与
# 游戏求职进展汇总 #
52760次浏览 344人参与
# 夸夸我的求职搭子 #
132020次浏览 1360人参与
# 腾讯求职进展汇总 #
207563次浏览 1694人参与
# 实习想申请秋招offer,能不能argue薪资 #
35782次浏览 308人参与