#30178: O(n)


fire5386 (becaidorz)


int prev[100005] 紀錄各個數字前一次出現的index

從左邊和右邊各掃過取min就是答案了

時間複雜度:O(n)

#30181: Re: O(n)


linlincaleb@gmail.com (臨末之頌)


int prev[100005] 紀錄各個數字前一次出現的index

從左邊和右邊各掃過取min就是答案了

時間複雜度:O(n)

是下面的陣列還是上面的阿 看不太懂 怎麼找index阿 不是還要用lower_bound嗎

#30183: Re: O(n)


fire5386 (becaidorz)


for(int i = 0; i < n; ++i) {
	prev[b[i]] = i;
	if(prev[a[i]] != -1) {
		ans[i] = min(ans[i], abs(i - prev[a[i]]));
	}
}

不需要用到lower_bound找位置 這樣複雜度少一個log(n)

#30184: Re: O(n)


linlincaleb@gmail.com (臨末之頌)


for(int i = 0; i < n; ++i) {
	prev[b[i]] = i;
	if(prev[a[i]] != -1) {
		ans[i] = min(ans[i], abs(i - prev[a[i]]));
	}
}

不需要用到lower_bound找位置 這樣複雜度少一個log(n)

哦 受教了 感謝大大分享