邻值查找—算法进阶指南
鄰值查找
給定一個(gè)長(zhǎng)度為 n 的序列 A,A 中的數(shù)各不相同。對(duì)于 A 中的每一個(gè)數(shù) Ai,求: min1≤j<i|Ai?Aj|
以及令上式取到最小值的 j(記為 Pi)。若最小值點(diǎn)不唯一,則選擇使 Aj 較小的那個(gè)。
輸入格式
第一行輸入整數(shù)n,代表序列長(zhǎng)度。
第二行輸入n個(gè)整數(shù)A1…An,代表序列的具體數(shù)值,數(shù)值之間用空格隔開(kāi)。
輸出格式
輸出共n-1行,每行輸出兩個(gè)整數(shù),數(shù)值之間用空格隔開(kāi)。
分別表示當(dāng)i取2~n時(shí),對(duì)應(yīng)的min1≤j<i|Ai?Aj|和Pi的值。
數(shù)據(jù)范圍
n≤105,|Ai|≤109
輸入樣例:
3
1 5 3
輸出樣例:
4 1
2 1
這里提供一個(gè)雙向鏈表的寫(xiě)法
EXAMPLE IN PUT
10
4 5 6 1 2 3 7 8 9 10
OUTPUT
1 1
1 2
3 1
1 4
1 5
1 3
1 7
1 8
1 9
具體思路如下圖
Befor
| id | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
我們先標(biāo)記初始值的id
Sorted 我們?cè)谇昂笤O(shè)置了兩個(gè)哨兵。
| id | 0 | 4 | 5 | 6 | 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 |
然后從后面枚舉
| id | 0 | 4 | 5 | 6 | 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 |
得到
相鄰最小可選的 id——9 11
———————value—1 ∞;
我們選出最佳的 id 是 9 .
如圖,我們刪去這個(gè)元素,把這個(gè)刪去元素的前后相連。
不斷重復(fù)如上操作,最后到只剩一個(gè)元素。
總結(jié)
以上是生活随笔為你收集整理的邻值查找—算法进阶指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 萝卜叶子的功效与作用、禁忌和食用方法
- 下一篇: 九制黄精的功效与作用、禁忌和食用方法