成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

顛倒乾坤;及忘我之乘積題的分析

開發 前端
在一棵二叉搜索樹中,有兩個節點顛倒了順序。要求實現一個算法,在不改變樹結構的前提下,恢復正確的二叉搜索樹。給出一個空間為O(n)的實現很容易,那該如何給出一個空間O(1)的實現呢?

今日面試題:顛倒乾坤

在一棵二叉搜索樹中,有兩個節點顛倒了順序。要求實現一個算法,在不改變樹結構的前提下,恢復正確的二叉搜索樹。給出一個空間為O(n)的實現很容易,那該如何給出一個空間O(1)的實現呢?

忘我之乘積分析

題目:

給你一個數組A[1..n],請你在O(n)的時間里構造一個新的數組B[1..n],使得B[i]=A[1]*A[2]*...*A[n]/A[i]。你不能使用除法運算。

分析:

看到題目,不要緊張,要頭腦清晰,看穿面試官的本意,實際上,他是用除法公式,但又要求不用除法來迷惑你。

要求在不使用除法的情況下計算B[i]=A[0]*…*A[n]/A[i],簡單變換一下形式,即可得到B[i]=A[0]*…*A[i-1]*A[i+1]*…*A[n],一共n-1次乘法。每一個B[i]計算一遍,總的時間復雜度為O(n^2)。不符合題目要求,必須減少乘法的次數。如何減少乘法的次數呢? 繼續分析,通過上面的變換,我們可以得到B[i]是由兩部分相乘得到的:

  1. A[0]*…*A[i-1]   
  2. A[i+1]*…*A[n] 

先看***部分,在計算B[i+1]的時候,是可以利用B[i]的***部分結果的,只需要乘以A[i]即得到B[i+1]的***部分。

第二部分同理,計算完A[i+1]*…*A[n],再計算A[i]*A[i+1]*…*A[n],只需要乘以A[i]即可。A[i]*A[i+1]*…*A[n]B[i-1]的第二部分。

由此分析,構建兩個新的數組:C和D(為了方便解釋,用了兩個數組),

  1. C[i] = A[0]*…*A[i-1] = C[i-1]*A[i-1]   
  2. D[i] = A[i+1]*…*A[n] = D[i+1]*A[i+1}   

構建C和D都是O(n)的時間復雜度(C從前到后遍歷一遍數組,D從后到前遍歷一邊數組),然后,B[i] = C[i]*D[i]也是O(n)的時間復雜度。整體算法的時間復雜度是O(n)

題目到這解答完畢。

但是面試官的問題還沒有完,他們會繼續問,這個解法的空間是O(n)的,能夠空間O(1)的情況下實現么?

首先看看一個只有5個數的數組,A[1],A[2],A[3],A[4],A[5]

首先從頭到尾遍歷:

  1. B[1] = A[1
  2. B[2] = B[1]*A[2
  3. B[3] = B[2]*A[3
  4. B[4] = B[3]*A[4
  5. B[5] = B[4], 臨時變量 C=A[5

然后從尾到頭遍歷:

  1. B[4] = B[3]*C, C=C*A[4
  2. B[3] = B[2]*C, C=C*A[3
  3. B[2] = B[1]*C, C=C*A[2
  4. B[1] = C 

通過這個小的例子,我們得到了算法,然后可以推廣到任意多的元素。這個是面試中常用的技巧。

大家可以自己嘗試把算法變成代碼。

原文鏈接:http://www.ituring.com.cn/article/49302

責任編輯:陳四芳 來源: 圖靈社區
相關推薦

2013-10-16 16:07:32

乘積面試題

2013-10-16 16:15:26

單鏈表

2010-06-13 11:05:52

2016-03-23 11:05:58

Socket開發框架分析

2019-09-20 08:54:38

KafkaBroker消息

2023-12-25 14:44:52

Java數組

2019-10-21 13:12:41

數據分析增強分析人工智能

2019-02-28 09:13:21

Linux用法交互模式

2021-12-15 15:03:51

Linux內核調度

2017-09-20 17:16:32

方太

2009-11-30 18:46:51

PHP字符串顛倒順序

2024-04-30 14:50:13

2011-08-18 11:31:06

MySQL性能分析explain

2013-06-08 11:25:18

路由協議路由技術路由器

2011-05-26 10:05:48

MongoDB

2013-01-15 18:26:36

教育信息化

2022-03-26 09:07:37

Pythonjs網絡

2015-12-31 17:47:54

2011-06-16 13:14:18

2011-06-16 13:37:43

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级一片在线观看 | 一区视频 | 青娱乐国产 | 四虎永久免费黄色影片 | 国产精品美女久久久久aⅴ国产馆 | 又爽又黄axxx片免费观看 | 伊人伊人 | 亚洲精品成人在线 | 伊大人久久 | 免费观看成人性生生活片 | 精品久久香蕉国产线看观看亚洲 | 99在线免费观看视频 | 正在播放国产精品 | 精品不卡 | 国产精品一区二区久久 | 国产一区二区三区四区三区四 | 亚洲视频三区 | 性色综合| 91麻豆产精品久久久久久夏晴子 | 国产精品成人一区 | 91国自视频 | 免费在线观看一区二区 | 日本羞羞影院 | 亚洲视频免费 | 亚洲精品一区二区三区四区高清 | 欧美久久精品一级c片 | 午夜免费福利影院 | 久久av综合| 一区二区av | 男人视频网站 | 91原创视频在线观看 | 一级aaaaaa毛片免费同男同女 | 天天干,夜夜操 | 欧美精品在线一区 | 在线播放一区二区三区 | 夜夜爽夜夜操 | 欧美在线播放一区 | 欧美亚洲第一区 | 欧美一级欧美一级在线播放 | 亚洲欧美日韩在线 | 中文字幕av网 |