Created
May 29, 2014 01:06
-
-
Save jikeytang/cfbc2e21db68f207eb46 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140529-题目2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
n个数字(0,1,...,n-1)形成一个圆圈,从数字0开始, | |
每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字), | |
当一个数字删除后,从被删除数字的下一个继续删除第m个数字, | |
求出这个圆圈中剩下的最后一个数字 | |
PS: | |
1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。 | |
```javascript | |
// you code | |
``` | |
2. 粘贴代码时请使用shift+tab,缩进前面的空白。 |
wzc602003869
commented
May 29, 2014
//ಥ_ಥ
function circle(n, m) {
var arr = [];
var cur, next, pre;
for(var i = 0; i < n; i++) {
arr[i] = {
index: i,
pre: i == 0 ? (n - 1) : (i - 1),
next: i == (n - 1) ? 0 : (i + 1)
};
}
cur = arr[0];
while(n != 1) {
for(i = 0; i <= m; i++) {
cur = arr[cur.next];
}
pre = arr[cur.pre];
next = arr[cur.next];
pre.next = next.index;
next.pre = pre.index;
if(pre.index == next.index) {
return pre.index;
}
n--;
}
}
console.log(circle(10, 5));
function xx (a, b) {
var arr = [];
for(var i = 0; i < a; i++){
arr.push(i);
}
arr.splice(b, 1)
while(arr.length > 1){
arr.splice(b%arr.length, 1);
}
console.log(arr[0]);
}
不知道对不
function getLast( n , m ){
var arr = [];
for( var i =0; i < n; i ++ ){
arr.push(i);
}
var _target = 0;
while( arr.length > 1 ){
// 判断需要删除的 当前的第m个后的在那里,并把这个赋值给_target
if( arr.length - _target > m ){
arr.splice(_target + m - 1 , 1) ;
_target = _target + m - 1 ;
}else if( arr.length - _target == m ){
arr.splice(_target + m - 1 , 1) ;
_target = 0 ;
}else{
var temp = (m - arr.length + _target - 1)%arr.length ;
arr.splice(temp, 1);
_target = temp ;
}
};
return arr[0]
};
console.log( getLast( 8 ,7) )
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment