東北大学 工学研究科 電気・情報系 2014年3月実施 基礎科目 問題4 情報基礎2
标签:
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
日本語原題
配列 には から の範囲の相異なる 個の整数 が含まれているとする。したがって, から の範囲の整数で,この配列 に含まれないものがちょうど1つある。入力として与えられた配列 から,この欠損した数を見つける問題を とする。
(1) を効率的に解くアルゴリズムの概略を示し,その計算量を与えよ。
(2) 配列 の要素があらかじめ昇順に並べられていると仮定したとき, をより効率的に解くアルゴリズムの概略を示し,その計算量を与えよ。
题目描述
数组 包含 中互不相同的 个整数,因此恰好缺少一个数。
- 给出寻找缺失数的高效算法及复杂度。
- 若数组已经严格递增排列,给出更高效的算法及复杂度。
Kai
(1)
利用异或中 ,计算
出现过的整数两两抵消,故 即缺失数。时间 ,额外空间 。
(2)
设缺失数为 。若 ,则 ;若 ,则 。二分寻找第一个满足 的位置;若不存在则返回 。
lo = 1; hi = n + 1
while lo < hi:
mid = floor((lo + hi) / 2)
if A[mid] == mid:
hi = mid
else:
lo = mid + 1
return lo - 1
循环中 ,不读取 。时间 ,额外空间 。