首页 > 其他分享 >#yyds干货盘点# 名企真题专题:小米Git

#yyds干货盘点# 名企真题专题:小米Git

时间:2022-12-03 21:01:30浏览次数:37  
标签:yyds Git 真题 int indexA father indexB depth 节点

1.简述:

描述

Git 是一个常用的分布式代码管理工具,Git 通过树的形式记录文件的更改历史(例如示例图),树上的每个节点表示一个版本分支,工程师经常需要找到两个分支的最近的分割点。

例如示例图中 3,4 版本的分割点是 1。3,5 版本的分割点是 0。

给定一个用邻接矩阵 matrix 表示的树,请你找到版本 versionA 和 versionB 最近的分割点并返回编号。

注意:

1.矩阵中从第一行 (视为节点 0 )开始,表示与其他每个点的连接情况,例如 [01011,10100,01000,10000,10000] 表示节点 0 与节点 1 , 3 , 4相连,节点 1 与节点 0 , 2相连,其他点的以此类推。

2.并不保证是一棵二叉树,即一个节点有可能有多个后继节点,我们把节点 0 视为树的根节点。

数据范围:树上节点数量满足 #yyds干货盘点# 名企真题专题:小米Git_java

示例图

#yyds干货盘点# 名企真题专题:小米Git_java_02

示例1

输入:

["01011","10100","01000","10000","10000"],1,2

返回值:

1

示例2

输入:

["0"],0,0

返回值:

0

2.代码实现:

import java.util.*;


public class Solution {

public void dfs(int node, int father, int dep, int[] path, int[] depth,String[] mat) {
depth[node] = dep;
path[node] = father;
for (int i = 0; i < mat.length; i++) {
if (i != father && mat[node].charAt(i)=='1') {
dfs(i,node,dep+1,path,depth,mat);
}
}
}
public int Git(String[] matrix, int indexA, int indexB) {
int n = matrix.length;
int[] depth = new int[n];
int[] father = new int[n];
father[0] = -1;
dfs(0,-1,0,father,depth,matrix);
while (depth[indexA] > depth[indexB]) {
indexA = father[indexA];
}
while (depth[indexB] > depth[indexA]) {
indexB = father[indexB];
}
while (indexA != indexB) {
indexA = father[indexA];
indexB = father[indexB];
}
return indexA;
}
}

标签:yyds,Git,真题,int,indexA,father,indexB,depth,节点
From: https://blog.51cto.com/u_15488507/5908655

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:旋转矩阵
    题目:给你一幅由N×N矩阵表示的图像,其中每个像素的大小为4字节。请你设计一种算法,将图像旋转90度。不占用额外内存空间能否做到? 示例1:给定matrix=[ [1,2,3],......
  • 使用Git对项目进行分支管理,更加方便项目的协作开发!
    在项目的开发过程中,很多时候都会使用Git托管工具进行项目文件或者代码的管理,方便团队成员之间的协作开发。使用Git进行项目管理目前也是越来越受到欢迎,除了Git还有很多的其......
  • jenkins集成shell与gitlab
    jenkins集成shell    故障:                     故障:  开发提交了代码,然后自动发布测试环境持续集成持续交......
  • #yyds干货盘点#JavaScript 网页异常捕获
    一、异常大概分类一般我们想要捕获的异常大概分类:语法错误onerror事件代码块与​​语法错误代码块​​不在一起,例如trycatche或者同在一个代码块,但是​​语法错误代码块​......
  • 如何使用git bash将代码推送到github
    1.准备首先需要现在本地安装好git,同时申请一个github的账号,创建一个新的仓库,如果已经存在了要推送代码的仓库则不需要创建。我这里是新创建了一个仓库:2.步骤2.1.在要......
  • readme-git
       https://blog.csdn.net/mChales_Liu/article/details/1043795261刚创建的idea项目和git联系忽略历史强制拉取gitpulloriginmaster--allow-unrelated-his......
  • 配置Gitlab Webook触发Jenkins流水线
    ......
  • 2022年Kubernetes CKA 认证真题解析完整版
    第一题RBAC授权问题权重:4%设置配置环境:[student@node-1]$kubectlconfiguse-contextk8sContext为部署管道创建一个新的ClusterRole并将其绑定到范围为特定的name......
  • 互联网最全cka真题解析-2022
    1、CKA真题解析kubectl自动补全及帮助信息1、配置kubectl自动补全aptinstallbash-completionsource<(kubectlcompletionbash)2、kubectlexplans帮助信息3、kubec......
  • Git 使用
    gitstashgitstashlist查看所有stashgitstashclear清楚所有stashgitstashpopgitstashsave'注释'加备注git查看历史gitlog文件名gitreflog文......