Leetcode 1029 - Two City Scheduling

題目

Problem#

有 2n 組數對 [a_i, b_i] 今天挑 $n$ 個 $a_i$ 相加,剩下的 $n$ 的 $b_i$ 相加,問你出來值最小多少?

想法#

直覺想法 按照大小 sort 接著從小的開始挑,但是 $b$ 就不保證是小的,有個想法是把每組 $(a_i, b_i)$ 變成 $x_i = a_i - b_i$,如果 $x$ 比較小,代表該數對的 $a$ 較大;如果 $x$ 比較大,代表該數對的 $b$ 較大。
按照 $a_i - b_i$ sort 之後,從小的開始挑 $n$ 個 + a,接著再挑 $n$ 個 + b 即可。

  • 時間複雜度: $\mathcal{O}(n\log{n})$ (sort)
  • 空間複雜度: $\mathcal{O}(1)$

AC Code#

心得#

一開始沒想到可以用相差來化簡大小比較,看了題解才有想法QQ