陣列統計;及樹的高度分析
今日面試題:陣列統計
給定陣列A,大小為n,陣列元素為1到n的數字,不過有的數字出現了多次,有的數字沒有出現。請給出演算法和程式,統計哪些數字沒有出現,哪些數字出現了多少次。能夠在O(n)的時間複雜度,O(1)的空間複雜度要求下完成麼?
================================================
樹的高度分析
原題
有一個棵樹,不一定是二叉樹,有n個節點,編號為0到n-1。有一個陣列A,陣列的索引為0到n-1,陣列的值A[i]表示節點i的父節點的id,根節點的父節點id為-1。給定陣列A,求得樹的高度。 分析這個題目我們首先把陣列寫出來,然後進一步分析,就很明瞭了,如下例子: 333-1201234根據題意:
節點0,1,2的父節點為3
節點3是根節點
節點4的父節點為2
一個很直接的解法是,遍歷陣列A中的每一個元素,回溯到根節點,得到這個節點的高度。遍歷完畢陣列之後,取最大的,就是樹的高度。上面的例子大概過程如下:
0->3->-1,得到0到到根的高度為2,同理1->3->-1, 2->3->-1
3->-1,高度就是1
4->2->3->-1,得到高度3
綜上,最大的高度是3,則樹的高度為3。這個方法的時間複雜度為O(n^2),空間複雜度為O(1)。
那麼是否能夠繼續改進呢?通過上面的計算過程,我們可以發現,在計算4->2->3->-1的時候,顯然2->3->-1已經計算過了,不需要再浪費時間重新計算一遍。示例程式碼如下:
【分析完畢】
本文來自微信:待字閨中,2013-08-28釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 燈;及陣列統計分析陣列
- 樹的高度;及字母表分析
- 陣列和;及此起彼伏分析陣列
- PHP原始碼陣列統計count分析PHP原始碼陣列
- 重排陣列;及消失的數字分析陣列
- 找陣列的波谷;及巧妙排序的分析陣列排序
- 樹狀陣列陣列
- 查詢提示;及重排陣列分析陣列
- 又見排序;及陣列和分析排序陣列
- PHP 陣列轉樹結構/樹結構轉陣列PHP陣列
- 解析樹狀陣列陣列
- 繩子的長度;及找陣列的波谷分析陣列
- 面試最常問的陣列轉樹,樹轉陣列 c++ web框架paozhu實現面試陣列C++Web框架
- 樹狀陣列詳解陣列
- 樹狀陣列基礎陣列
- poj 2481 樹狀陣列陣列
- hdu 3874 樹狀陣列陣列
- 二維樹狀陣列陣列
- 字母統計(陣列思維)陣列
- JS陣列方法總覽及遍歷方法耗時統計JS陣列
- CF 293 E Close Vertices (樹的分治+樹狀陣列)陣列
- 樹狀陣列模板題 & (樹狀陣列 1:單點修改,區間查詢)陣列
- 樹狀陣列和逆序對陣列
- hdu 5147 樹狀陣列陣列
- 【筆記/模板】樹狀陣列筆記陣列
- 樹狀陣列快速入門陣列
- POJ 2217-Secretary(字尾陣列+高度陣列-最大公共子串長度)陣列
- javascript的boolean及陣列的indexJavaScriptBoolean陣列Index
- 線段樹+差分——【模板】樹狀陣列2陣列
- hdu 4836 The Query on the Tree(線段樹or樹狀陣列)陣列
- 統計陣列個元素出現的個數陣列
- 樹狀陣列模板+習題集陣列
- 雙陣列字典樹(Double Array Trie)陣列
- 樹狀陣列3種基本操作陣列
- (BST)升序陣列變為BST樹陣列
- 學習筆記----樹狀陣列筆記陣列
- 樹狀陣列upc1976陣列
- CSU 4441 Necklace (樹狀陣列/LIS)陣列