小米Git
这个题目的意思其实就是要分别从根节点开始遍历(dfs)到给定的两个点,然后从得出的路径中获取最早相同的点即为结果。
class Solution {
public:
/**
* 返回git树上两点的最近分割点
*
* @param matrix 接邻矩阵,表示git树,matrix[i][j] == '1' 当且仅当git树中第i个和第j个节点有连接,节点0为git树的跟节点
* @param indexA 节点A的index
* @param indexB 节点B的index
* @return 整型
*/
int getSplitNode(vector<string> matrix, int indexA, int indexB) {
if(indexA == indexB) return indexA;
int len = matrix.size();
vector<int> vis1(len , 0);
vector<int> vis2(len , 0);
vector<int> rds1;
vector<int> rds2;
rds1.push_back(0);
rds2.push_back(0);
vis1[0] = 1;
vis2[0] = 1;
getRoadList(matrix,0,indexA,vis1,rds1);
getRoadList(matrix,0,indexB, vis2,rds2);
int ans = 0 , j = rds1.size() -1 ;
for( ; j > 0 ; j --)
for( int i = rds2.size() -1 ; i > 0 ; i --){
if(rds1[j] == rds2[i])
return rds1[j];
}
return ans;
}
bool getRoadList(vector<string> matrix , int start , int index , vector<int>& vis, vector<int>& rds){
string str = matrix[start];
for(int i = 0 ; i < str.length() ; i ++){
if(vis[i]) continue;
if(str[i] == '1' ){
vis[i] = 1;
if(i == index){
rds.push_back(index);
return true;
}
else{
rds.push_back(i);
if(!getRoadList(matrix , i , index , vis , rds)){
rds.pop_back();
vis[i] = 0;
}else{
return true;
}
}
}
}
return false;
}
};
小米Git的更多相关文章
- 笔试面试题-小米Git
题目描述: git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常 ...
- (笔试题)小米Git
题目: git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需 ...
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...
- react-native学习笔记--首次安装apk到小米5报错
本文直接引用大神文档: [WINDOWS环境 React Native初识]com.android.ddmlib.InstallException: Failed to establish sessi ...
- BeagleBone Black安装小米随身WiFi驱动方法
以下操作直接在beaglebone black上执行 下载驱动源码 git clone https://github.com/rcn-ee/mt7601u.git 下载linux-headers,这是 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- Centos7-驱动小米WIFI做AP
参考文章: http://blog.csdn.net/sumang_87/article/details/38168877 http://blog.csdn.net/hktkfly6/article/ ...
- [干货,阅后进BAT不是梦]面试心得与总结---阿里、小米、腾讯
之前实习的时候就想着写一篇面经,后来忙就给忘了,现在找完工作了,也是该静下心总结一下走过的路程了,我全盘托出,奉上这篇诚意之作,希望能给未来找工作的人一点指引和总结, 也希望能使大家少走点弯路 , 如 ...
- 编译小米mini openwrt
编译小米mini openwrt 1.下载openwrt源码包:进入要下载保存的文件目录,输入 git clone git://git.openwrt.org/15.05/openwrt.git 2. ...
随机推荐
- Spark Streaming架构设计和运行机制总结
本期内容 : Spark Streaming中的架构设计和运行机制 Spark Streaming深度思考 Spark Streaming的本质就是在RDD基础之上加上Time ,由Time不断的运行 ...
- [转]简单理解Socket
简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html 题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...
- PIC32MZ tutorial -- Core Timer
Core Timer is a very popular feature of PIC32 since it is a piece of the MIPS M4K core itself and is ...
- 过渡transitioin
一,什么是过渡(transition)? 1,transition 允许 CSS 元素的属性值在一定的时间区间内平滑地过渡. 2,可以在不使用 Flash 动画或 JavaScript 的情况下,在元 ...
- 30款最好的 Bootstrap 3.0 免费主题和模板
Twitter Bootstrap 框架已经广为人知,用于加快网站,应用程序或主题的界面开发,并被公认为是迄今对于 Web 开发的最有实质性帮助的工具之一.在此之前的,各种各样的界面库伴随着高昂的维护 ...
- JavaEE第一天知识点总结
JavaEE第一天知识点总结 持久化是将程序中的数据在瞬时状态和持久状态间转换的机制 DAO: 英文全称: Date Access Object(数据存取对象) 位于业务逻辑和持久化数据之间 实现对持 ...
- C# MVC ( 添加路由规则以及路由的反射机制 )
在项目文件夹下找到 App_Start 下 找到 RouteConfig.cs文件 打开 (1) 约束的规则 从上往下 贪婪性 (2) 用 routes.MapRoute(...) 添加 ...
- elasticsearch同义词及动态更新
第一种:参考地址:http://dev.paperlesspost.com/setting-up-elasticsearch-synonyms/271.Add a synonyms file.2.Cr ...
- Lambda GroupBy Sum
DataTable dt = new DataTable(); dt.AsEnumerable().GroupBy(r => r["ShopName"]) .Select(g ...
- javascript判断对象
var assert = require('chai').assert; describe('Array', function() { describe('#indexOf()', function( ...