今天看到一題羅志祥的多人運動笑死了,趕忙來解答一會兒~git
點上面連接能夠看原題,裏面還有C++的解法~(但我tmd看不懂)github
順便推薦star一下LeetCode題解~數組
我把題目複製到這裏來~code
已知小豬每晚都要約好幾個女生到酒店房間。每一個女生 i 與小豬約好的時間由 [si , ei]表示,其中 si 表示女生進入房間的時間, ei 表示女生離開房間的時間。因爲小豬心胸開闊,思想開明,不一樣女生能夠同時存在於小豬的房間。請計算出小豬最多同時在作幾人的「多人運動」。three
Input : [ [0 , 30] , [5 , 10], [15, 20] ]leetcode
OutPut :最多同時有兩個女生的「三人運動」文檔
求出每一個時間刻度有幾人在場便可。get
今天忽然想看一下three.js,可是跟着文檔走沒遇到什麼問題,因此就來作題吧~input
話很少說(已經說了不少了)直接看代碼吧~it
註釋寫的超詳細~
// 首先輸入的是一個二維數組
let input = [[0, 30], [5, 10], [15, 20]];
function getPigTime(input) {
// 新數組,用來記錄每一個人在豬豬房裏的每一個時間點
let newArr = new Array();
// 遍歷input
input.forEach((item) => {
// 遍歷input裏每一個妹子的時間
for (let i = item[0]; i <= item[1]; i++) {
// 每一個存在的時間點,人物數量+1,每一個還沒有計算的時間點,賦給新數組一個初始值1
newArr[i] ? (newArr[i]++) : (newArr[i] = 1);
}
});
// 新數組中最大的數字就是同一時間多人在線的人物數量。注意這裏小豬不算人
return Math.max(...newArr);
}
console.log(getPigTime(input));
input.forEach( (item)=> {
// 轉換成數組
newArr.push(Array.from(new Array(item[1] + 1).keys()).slice(item[0]));
/* 解釋上面的狗屎代碼:
new Array(item[1]+1).keys()是一個array iterator
外面套上Array.from()就生成一個item[1]個元素的從0到item[1]的數組
再接上slice(item[0])切掉從0到item[0]的數字後就剩下從item[0]開始到item[1]結束的數組了
而後把這個數組push到newArr裏面,以便forEach結束後繼續用...
*/
}