總結各種題目中的數學奇技淫巧(?)

  1. LC453

這是準備coursera OA遇到的一個easy卻有趣的題,一開始我想的是先排序,而後不停找出最小值,前n-1個數加1...總之就是時間複雜度過高沒法AC,這時候我以爲沒法AC的easy題確定是要用一些數學上的巧辦法了,google之,因而整理以下:
每作一次move,至關於除了最後一位數以外全部數+1,換個角度想實際上是最後一位數-1: [1,2,3] ---> [2, 2, 3] = [1, 2, 2]效果是同樣的。因此說,要使全部數相等,能夠等價轉換爲全部數都減到和min同樣大。因而思路變成了「找到min -> 累加每一個數與min的差值」。繼續優化,由於找到Min至少須要一次遍歷,累加又是一次遍歷,有沒有辦法同一次遍歷搞定全部事情呢?很簡單,對於數組[a1,a2,a3,...,an] 累加 (a1 - min) + (a2 - min) + (a3 - min) + ... + (an - min) = ∑a - n x min(sf怎麼打星號就變成了斜體...)。 因而只須要一次遍歷,一邊求和,一邊找到Min,最後返回sum - nums.length x min便可。數組

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息