99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

35歲程序員腦干出血,可能要一輩子做康復。。

0
分享至

專欄:50多種數據結構徹底征服

專欄:50多種經典圖論算法全部掌握

最近浙江杭州一位35歲程序員因長期熬夜,導致腦干出血,昏迷了15天,經過緊急治療后,他在接受媒體采訪時說:自己每天早上 7 點起床,到凌晨一兩點睡。

這簡直是拿生命當兒戲,說實話凌晨一兩點睡,20多歲的時候我也遇到過,不過一年也不會超過5次,如果真的睡那么晚,第二天基本上要9點之后起床了。35歲之后就更不能這樣搞了,長期下去早晚有出事。

當事人稱自己在ICU一共待了28天,后來又去康復醫院待了70多天,回家之后也一直在康復和鍛煉,現在已經恢復了大約70%,但可能沒有辦法完全康復了。

他還說:“現在的我看待生活,覺得讓自己開心很重要,活得自由一點。之前想著我要掙錢,會在很多方面壓制自己,現在的話我覺得更多的可能要去好好體驗生活,讓自己過得快樂。也希望大家如果覺得累了,就歇一歇,我是前車之鑒?!?/p>




--------------下面是今天的算法題--------------

來看下今天的算法題,這題是LeetCode的第1483題:樹節點的第 K 個祖先,難度是困難。

給你一棵樹,樹上有 n 個節點,按從 0 到 n-1 編號。樹以父節點數組的形式給出,其中 parent[i] 是節點 i 的父節點。樹的根節點是編號為 0 的節點。樹節點的第 k 個祖先節點是從該節點到根節點路徑上的第 k 個節點。

實現 TreeAncestor 類:

1,TreeAncestor(int n, int[] parent) 對樹和父數組中的節點數初始化對象。

2,getKthAncestor(int node, int k) 返回節點 node 的第 k 個祖先節點。如果不存在這樣的祖先節點,返回 -1 。

示例1:



輸入: ["TreeAncestor","getKthAncestor","getKthAncestor","getKthAncestor"] [[7,[-1,0,0,1,1,2,2]],[3,1],[5,2],[6,3]] 輸出: [null,1,0,-1]

解釋: TreeAncestor treeAncestor = new TreeAncestor(7, [-1, 0, 0, 1, 1, 2, 2]); treeAncestor.getKthAncestor(3, 1); // 返回 1 ,它是 3 的父節點 treeAncestor.getKthAncestor(5, 2); // 返回 0 ,它是 5 的祖父節點 treeAncestor.getKthAncestor(6, 3); // 返回 -1 因為不存在滿足要求的祖先節點

  • 1 <= k <= n <= 5 * 10^4

  • parent[0] == -1 表示編號為 0 的節點是根節點。

  • 對于所有的 0 < i < n ,0 <= parent[i] < n 總成立

  • 0 <= node < n

  • 至多查詢 5 * 10^4 次

問題分析

這題讓返回某個節點的第 k 個祖先節點,并且查詢次數高達 5 * 10^4 ,如果每次查詢的時候都要重新找,肯定是不行的。因為這題沒有對樹修改的函數,所以這棵樹是固定的,我們可以先計算所有節點的第 x 個祖先節點,查詢的時候就會更加方便。

我們這里使用倍增的思想,定義數組dp[i][j]表示節點 i 的第 2^j 個祖先。很明顯當 j 等于 0 的時候,dp[i][0]表示的是節點 i 的父節點。

找到每個節點的父節點了,那么肯定也能找到每個節點父節點的父節點,也就是dp[i][1]=dp[dp[i][0]][0],也就是說節點 i 的第 2^1 個祖先是節點 i 的第 2^0 個祖先的第 2^0 個祖先。

更進一步我們可以得出節點 i 的第 2^j 個祖先是節點 i 的第 2^(j-1) 個祖先的第 2^(j-1) 個祖先。舉個例子,節點 i 的第 8 個祖先節點是它的第 4 個祖先節點的第 4 個祖先節點。

所以我們可以得到:dp[i][j]=dp[dp[i][j-1]][j-1],但這樣計算的結果是不完整的,比如計算 i 的第 13 個祖先節點,我們可能最多只能計算它的第 8 個祖先節點,但這不影響查詢。

在進行查詢的時候我們是根據這個數字的二進制進行查詢的。比如 13 的二進制是 1101,我們只需要往上先查詢 i 的第 1 個,然后第 4 個,最后第 8 個,最終結果就是 i 的第 13 個祖先節點。

JAVA:

class TreeAncestor {     int bits;// n 的最大位數     // dp[i][j] 表示節點 i 的第 2^j 個祖先     int[][] dp;     public TreeAncestor(int n, int[] parent) {         bits = (int) (Math.log(n) / Math.log(2)) + 1;         dp = newint[n][bits];         for (int i = 0; i < n; i++)             Arrays.fill(dp[i], -1);// 全部默認為 -1 。         // 所有節點的第一個祖先是它的父節點。         for (int i = 0; i < n; i++)             dp[i][0] = parent[i];         // 節點 i 的第 2^j 個祖先也是節點 i 的第2^(j-1)個祖先的第2^(j-1)個祖先。         for (int j = 1; j < bits; j++) {             for (int i = 0; i < n; i++) {                 // i 的第2^(j-1)個祖先就是dp[i][j - 1]。                 if (dp[i][j - 1] != -1) dp[i][j] = dp[dp[i][j - 1]][j - 1];             }         }     }     // 利用二進制的特性使用倍增查詢。     public int getKthAncestor(int node, int k) {         for (int j = 0; j < bits; j++) {             // 比如 k 是13,它的二進制是1101,只有二進制中是 1 的時候才需要查詢,             // 先往上查 1 個,在往上查 4 個,最后在往上查 8 個,正好查找第 13 個。             if (((k >> j) & 1) == 1) {                 // 從node開始往上查詢第 2^j 個。                 node = dp[node][j];                 if (node == -1)// 如果為 -1 ,說明不存在第 k 個祖先。                     return -1;             }         }         return node;     } }

C++:

class TreeAncestor { private:     int bits; // n 的最大位數     vector

 > dp; // dp[i][j] 表示節點 i 的第 2^j 個祖先 public:     TreeAncestor(int n, vector

 &parent) {         bits = (int) (log(n) / log(2)) + 1;         dp = vector

 >(n, vector

 (bits, -1)); // 初始化為 -1         // 所有節點的第一個祖先是它的父節點。         for (int i = 0; i < n; i++)             dp[i][0] = parent[i];         // 節點 i 的第 2^j 個祖先也是節點 i 的第2^(j-1)個祖先的第2^(j-1)個祖先。         for (int j = 1; j < bits; j++) {             for (int i = 0; i < n; i++) {                 // i 的第2^(j-1)個祖先就是dp[i][j - 1]。                 if (dp[i][j - 1] != -1)                     dp[i][j] = dp[dp[i][j - 1]][j - 1];             }         }     }     // 利用二進制的特性使用倍增查詢。     int getKthAncestor(int node, int k) {         for (int j = 0; j < bits; j++) {             // 比如 k 是13,它的二進制是1101,只有二進制中是 1 的時候才需要查詢,             // 先往上查 1 個,在往上查 4 個,最后在往上查 8 個,正好查找第 13 個。             if (((k >> j) & 1) == 1) {                 // 從node開始往上查詢第 2^j 個。                 node = dp[node][j];                 if (node == -1)// 如果為 -1 ,說明不存在第 k 個祖先。                     return-1;             }         }         return node;     } };




筆者簡介

博哥,真名:王一博,畢業十多年, 作者,專注于 數據結構和算法 的講解,在全球30多個算法網站中累計做題2000多道,在公眾號中寫算法題解800多題,對算法題有自己獨特的解題思路和解題技巧,喜歡的可以給個關注,也可以 下載我整理的1000多頁的PDF算法文檔 。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
曼聯的痛!23歲格林伍德炸裂:飆驚天世界波,現場視角,太絲滑了

曼聯的痛!23歲格林伍德炸裂:飆驚天世界波,現場視角,太絲滑了

側身凌空斬
2025-05-11 05:40:49
澤連斯基要求俄羅斯:必須從5月12日開始全面無條件?;鹬辽?0天

澤連斯基要求俄羅斯:必須從5月12日開始全面無條件?;鹬辽?0天

仗劍看世界
2025-05-10 22:28:17
96歲李嘉誠看五月天演唱會,坐輪椅隨音樂打拍子,周凱旋全程護駕

96歲李嘉誠看五月天演唱會,坐輪椅隨音樂打拍子,周凱旋全程護駕

愛侃娛的丁丁
2025-05-11 00:38:41
殲10擊落3架陣風,成飛集成卻巨虧7500萬!軍工光環下的敗家子?

殲10擊落3架陣風,成飛集成卻巨虧7500萬!軍工光環下的敗家子?

獵火照狼山
2025-05-10 19:41:36
九寨溝突然放大招!全國景區慌了:這管理水平是要逼死同行?

九寨溝突然放大招!全國景區慌了:這管理水平是要逼死同行?

小彭聊社會
2025-05-07 00:55:19
青島法官“烏龍普法”的“行人相撞”案:真是“葫蘆僧案”!

青島法官“烏龍普法”的“行人相撞”案:真是“葫蘆僧案”!

浪花說法
2025-05-11 08:39:11
女跑者穿瑜伽褲,那條線讓人浮想聯翩

女跑者穿瑜伽褲,那條線讓人浮想聯翩

跑者排球視角
2025-05-07 21:04:51
馬云、蔡崇信、蔣凡現身阿里日活動

馬云、蔡崇信、蔣凡現身阿里日活動

三言科技
2025-05-10 20:17:07
最新戰報,印度高官戰死,飛行員被俘,電網癱瘓,上演小刀切黃油

最新戰報,印度高官戰死,飛行員被俘,電網癱瘓,上演小刀切黃油

戰友老鄧
2025-05-10 13:02:31
S媽首度公開大S夫婦為小玥兒慶生視頻,大S靠女兒肩膀唱歌好漂亮

S媽首度公開大S夫婦為小玥兒慶生視頻,大S靠女兒肩膀唱歌好漂亮

顧蔡衛
2025-05-11 06:55:52
梅西1098場轟生涯第860球創歷史最快紀錄,C羅1189場時達成

梅西1098場轟生涯第860球創歷史最快紀錄,C羅1189場時達成

懂球帝
2025-05-11 10:58:09
達成協議!“全歐射手王”將正式加盟阿森納!欽點簽“意甲頭牌”

達成協議!“全歐射手王”將正式加盟阿森納!欽點簽“意甲頭牌”

頭狼追球
2025-05-11 09:55:30
孫子和外孫出國,我一人給150000,三年后,兩個人表現天壤之別

孫子和外孫出國,我一人給150000,三年后,兩個人表現天壤之別

源遠講堂
2025-05-09 16:38:54
CBA總決賽G3戰還沒打!廣廈已提前開售G5戰門票:回主場奪冠嗎?

CBA總決賽G3戰還沒打!廣廈已提前開售G5戰門票:回主場奪冠嗎?

籃球快餐車
2025-05-11 04:20:13
中國臺協通過英媒聲明,趙心童參加世錦賽合規,疑似回應墨菲質疑

中國臺協通過英媒聲明,趙心童參加世錦賽合規,疑似回應墨菲質疑

楊華評論
2025-05-11 01:09:40
瑞典網友在發出拷問:為什么北歐五國,只有瑞典不能免簽去中國

瑞典網友在發出拷問:為什么北歐五國,只有瑞典不能免簽去中國

我不叫阿哏
2025-05-04 07:51:18
中鋒要來了!26歲的克拉克斯頓,適合湖人嗎?

中鋒要來了!26歲的克拉克斯頓,適合湖人嗎?

籃球實錄
2025-05-11 12:24:38
想不到!賴清德出怪招,把96%漢人改“其余人口”,藍委批語亮了

想不到!賴清德出怪招,把96%漢人改“其余人口”,藍委批語亮了

朗威游戲說
2025-05-11 01:21:38
西游:獅駝嶺真正恐怖之處,并非尸山血海,而是孫悟空看透的真相

西游:獅駝嶺真正恐怖之處,并非尸山血海,而是孫悟空看透的真相

大千世界觀
2025-05-09 14:51:23
美國的戰略誤判到底有多嚴重?美官員:從未想過中國能變這么強大

美國的戰略誤判到底有多嚴重?美官員:從未想過中國能變這么強大

小lu侃侃而談
2025-05-10 20:21:33
2025-05-11 12:36:49
數據結構和算法
數據結構和算法
專門介紹和寫算法題解的號
227文章數 2關注度
往期回顧 全部

科技要聞

首款折疊屏iPhone,有新消息!

頭條要聞

牛彈琴:印巴戲劇性地突然宣布?;?背后有五大原因

頭條要聞

牛彈琴:印巴戲劇性地突然宣布?;?背后有五大原因

體育要聞

分手7年之后,漢堡終于原諒了德甲

娛樂要聞

S媽撒謊實錘!馬筱梅親切喊她徐媽媽

財經要聞

重慶一家人把755億巨債留給了股民

汽車要聞

空間表現是優勢 極狐T1將于5月底正式亮相發布

態度原創

游戲
本地
房產
公開課
軍事航空

沒有一點防備:Xbox歐洲突然下架27款游戲

本地新聞

非遺里的河南|汴梁鳶舞千年韻!宋室風箏藏多少絕活

房產要聞

??陧敿壝9傩鰯U!南海大道、金盤的業主們要沸騰了!

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

印巴?;鸷蠡シQ擊落對方無人機

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 宽甸| 松桃| 孙吴县| 临汾市| 博客| 北辰区| 河南省| 札达县| 禄劝| 乌什县| 雅安市| 凤翔县| 滨海县| 乌兰察布市| 偏关县| 弥渡县| 青海省| 泗阳县| 裕民县| 钦州市| 天峨县| 尚志市| 普陀区| 惠东县| 柳江县| 阳谷县| 延川县| 施秉县| 万年县| 历史| 吴江市| 宁波市| 沁源县| 左云县| 三穗县| 贡嘎县| 太仓市| 勃利县| 嘉义市| 莱芜市| 松原市|