每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。hf作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成乙個大圈。然後,他隨機指定乙個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然後可以在禮品箱中任意的挑選禮物,並且不再回到圈中,從他的下乙個小朋友開始,繼續0…m-1報數…這樣下去…直到剩下最後乙個小朋友,可以不用表演,並且拿到牛客名貴的「名偵探柯南」典藏版(名額有限哦!!_)。請你試著想下,哪個小朋友會得到這份禮品呢?(注:小朋友的編號是從0到n-1)
如果沒有小朋友,請返回-1
思路:建立乙個陣列[0,1,2,3…n-1]代表每個小朋友
每次報到m-1的時候記錄index,並且將報這個數的值從陣列中刪除
直到陣列中只有乙個成員是退出
function lastremaining_solution(n, m)
let count = n;
let arr = ;
let start = 0;
for(let i = 0; i < n;i++)
while(count > 1)
if (m - 1 >= count) else if (rnum === 0) else
} else else if(count - 1 - start === m - 1)
else
}count = arr.length;
}return arr[0];
}
我的刷題日記(6)
題目描述 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。首先得清楚怎麼求乙個整數的二進位制?什麼是原碼,反碼,補碼?比如用四位的二進位制數表示1 則為0001 正數的原碼 第一位是0 符號位 表示正數0001 負數的原碼 第一位是1表示負數。1001 正數的 原碼 反碼 補碼 負...
我的刷題日記(9)
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。function nodelist x const arr1 1,2,3,4,5,6 鍊錶節點的值 function getnodelist arr const root new nodelist arr 0 let p root for let i 1 i...
我的刷題日記(12)
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。方法一 思路 先找出陣列中和等於sum的每一對,放在乙個陣列裡。比如 1,9 2,8 5,5 然後找出乘積最小的那一對 function findnumberswithsu...