11--输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
function getNum(n){ var count=0; if(n<0){ n=n&0x7FFFFFFF; //负数的补码取出来 count++;//最高位的符号位1,加到count中 } while(n){ count+=n%2 //取余,同时将该二进制数各位相加,获得1的个数 n>>=1 //右移1位,相当于除以2 } return count } console.log(getNum(10));
12--给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
function Power(base, exponent) { // write code here var position=true; if(exponent==0){ return 1; }else if(exponent<0){ exponent*=-1; position=false; } var pow=1.0; for(var i=1;i<=exponent;i++){ pow*=base } if(!position){ pow=1.0/pow; } return pow }
13--输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
function reOrderArray(array) { var left=[]; var right=[]; for(var i=0;i<array.length;i++){ if(array[i]%2==0){ //right数组用来存放偶数 right.push(array[i]); }else{ left.push(array[i]); //left数组用来存放奇数 } } for(var i=0,len=right.length;i<len;i++){ left.push(right[i]); } return left; }
14--输入一个链表,输出该链表中倒数第k个结点
function FindKthToTail(head, k) { // write code here var p=head; var q=head; //p、q开始都指向头指针 for(var i=0;p&&i<k;i++){ //将p向后移动k个节点 p=p.next; } if(i<k){ //数据错误,即还没遍历到第k个位置,数据就结束了 return null; } while(p!=null){ //p、q同时向后移动,当p移动到链表最后时,q正好移动//到倒数第k个节点,p与q之间相差k p=p.next; q=q.next; } return q; }