Skip to content

Instantly share code, notes, and snippets.

@jikeytang
Created May 29, 2014 01:06
Show Gist options
  • Save jikeytang/cfbc2e21db68f207eb46 to your computer and use it in GitHub Desktop.
Save jikeytang/cfbc2e21db68f207eb46 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140529-题目2
n个数字(0,1,...,n-1)形成一个圆圈,从数字0开始,
每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字),
当一个数字删除后,从被删除数字的下一个继续删除第m个数字,
求出这个圆圈中剩下的最后一个数字
PS:
1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。
```javascript
// you code
```
2. 粘贴代码时请使用shift+tab,缩进前面的空白。
@styling
Copy link

styling commented May 30, 2014

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]);
}
不知道对不

@wsgouwan
Copy link

wsgouwan commented Dec 5, 2014

        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