演算法題 小公尺Git

2021-07-10 20:19:25 字數 956 閱讀 1380

題目描述:

git是一種分布式**管理工具,git通過樹的形式記錄檔案的更改歷史,比如: base'<--base<--a<--a' ^ | --- b<--b' 小公尺工程師常常需要尋找兩個分支最近的分割點,即base.假設git 樹是多叉樹,請實現乙個演算法,計算git樹上任意兩點的最近分割點。 (假設git樹節點數為n,用鄰接矩陣的形式表示git樹:字串陣列matrix包含n個字串,每個字串由字元'0'或'1'組成,長度為n。matrix[i][j]=='1'當且僅當git樹種第i個和第j個節點有連線。節點0為git樹的根節點。)

輸入例子:

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

輸出例子:

1

class solution }}

// 用於廣度遍歷此多叉樹,這裡是類似棧的結構

vectorstk;

// 存入根節點

stk.push_back(0);

// 根節點的深度置為0

dep[0] = 0;

// 類似廣度遍歷此多叉樹

while (not stk.empty())

// v的父節點是u

fa[v] = u;

// v的深度為其父節點深度+1

dep[v] = dep[u] + 1;

// 將v入棧

stk.push_back(v);}}

// 尋找a和b的最近分割點

int a = indexa, b = indexb;

// 將a和b回溯到相同高度

while(dep[a] > dep[b])

while(dep[a] < dep[b])

// 尋找最近分割點

while(a != b)

return a;

}};

程式設計題 小公尺git

題目描述 git是一種分布式 管理工具,git通過樹的形式記錄檔案的更改歷史,比如 base base a a b b 小公尺工程師常常需要尋找兩個分支最近的分割點,即base.假設git 樹是多叉樹,請實現乙個演算法,計算git樹上任意兩點的最近分割點。假設git樹節點數為n,用鄰接矩陣的形式表示...

小公尺二面手撕演算法題

今天參加小公尺二面,面試官讓手撕一道演算法題,感覺這道演算法題挺有意義的,所以還是分享出來。題目如下 這道題目的思路可能會很簡單,但是裡面的細節可能會要重視一下,我自己寫的 如下,能夠全部通過。話不多說,直接上 public static void main string args else sb1...

小公尺程式設計題

乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為1 1 2 2 3 3 4 4 5 5 6 6。這些產品通常使用乙個 6 6 h 的長方體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的包裹數量。他們很需要有乙個好的程式...