有一堆整數,請把他們分成三份,確保每乙份和盡量相等(11,42,23,4,5,6,4,5,6,11,23,42,56,78,90)
function
foo(arr)
maxnumbertotal=total/3;
let temptotal=arr[
amount-1
];let firstarr=
[arr[
amount-1
]];let delindex=
[amount-1
];let firstindex=-1
;//獲取第乙份資料
for(
let i=
amount-2
;i>
0;i--
)else
if(temptotal>maxnumbertotal)
else
if(temptotalelse}}
}for
(let i=
0;i)amount
=arr.length;
//注意每次的arr都是不一樣的
let secondarr=
[arr[
amount-1
]]; delindex=
[amount-1
];let secondindex=-1
; temptotal=arr[
amount-1
];//獲取第二份陣列
for(
let i=
amount-2
;i>
0;i--
)else
if(temptotal>maxnumbertotal)
else
if(temptotalelse}}
}for
(let i=
0;i)//公平處理,當出現極差情況就需要做公平處理了,這裡暫時不考慮極差情況
return
[firstarr,secondarr,arr]
} console.
log(
foo([11
,42,23
,4,5
,6,4
,5,6
,11,23
,42,56
,78,90
]));
思路:
1、求出總和 為406 ,根據需要分成的分數(三份)求出每份的平均數為 135.33
2、用平均數(135.34)減去本陣列中最大的數(90) 等於45.34,然後將45.34 找出當前陣列中接近該數字 為42,第乙份數字可以確定 135.34 -(90 + 42)= 3.34 ,這個3.34 在本陣列內屬於最小的數字,所以不能被其他陣列代替,確定第一組數字時候,將90 ,42 將本陣列移除,重複該步驟
3、第二份數值,將90 ,42 將本陣列移除 本陣列最大的就是 78,然後 平均數135.34 - 78=57.34, 57.34 最接近的數字就是 56, 135.34 -(78 + 56)= 1.34,餘數 已是小於陣列中最小的數字,所以確定第二份陣列為 78、56,將本陣列移除
4、此時數字還剩【42、23、23、11、11、6、6、5、5、4、4】,第三份數字中可以將最大的42設定為第乙個數字,可以用平均數 135.34 - 42 = 93.34 ,此時陣列內還有【23、23、11、11、6、6、5、5、4、4】,剩餘的數字93.34 比 剩餘的最大數字還大,所以需要迴圈累計望第三份陣列累放…… 135.34 - 42 - 23 -23 …… -4 -4 = -4.66
思路簡括:求出平均數,然後使用陣列中最大的數字跟平均數對比,然後用差異陣列去跟剩下的陣列內的數字比較,拿出相近的陣列(直到差異小於陣列內最小的值為止)
結論:乙份陣列135.34 -(90 + 42 + 4)= -0.64
二份陣列135.34 -(78 + 56)= 1.34
二份陣列135.34 -(42 + 23 + 23 + 11 + 11 + 6 + 6 + 5 + 5 + 4 )= -0.66
深度工作 充分使用每乙份腦力
浮躁已經成了普遍的社會現象。判斷乙個人是否浮躁非常容易,看他一天主動拿起手機的次數就可以了。據ted的演講者說,這個值一般是50次,除了8小時的睡覺之外,基本上每20分鐘就要去翻翻手機。我們還發現,幾乎同時畢業的同學,在工作幾年後會產生巨大的差距,有的人已經能夠管理上百人的大團隊,而有的人甚至連自己...
主存和cache每一塊相等 多核Cache一致性
經過這麼多篇文章的介紹,我們應該已經對cache有乙個比較清晰的認識。cache會面臨哪些問題,我們該怎麼處理這些問題。現在我們討論多核cache一致性問題。在摩爾定律不太適用的今天,人們試圖增加cpu核數以提公升系統整體效能。這類系統稱之為多核系統 簡稱mp,multi processor 我們知...
主存和cache每一塊相等 cache基本原理
在學習linux kernel的過程,經常會cache的概念,從軟體層面的page buffer cache 再到硬體層面中cpu的l1 l2 l3 cache tlb,磁碟內部的硬體cache 以及程式設計時的cacheline對齊,slab著色等等。cache是我們始終繞不開的乙個主題,本文主要...