• 剑指offer の 11-20 之javascript实现


    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类型的浮点数baseint类型的整数exponent。求baseexponent次方。

    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;
    }
    
    宝剑锋从磨砺出,梅花香自苦寒来。
  • 相关阅读:
    在linux下搭建wiki环境【转】
    GitLab版本管理【转】
    linux设备驱动中的并发控制【转】
    分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace【转】
    Git常用命令总结【转】
    Linux中断(interrupt)子系统之一:中断系统基本原理【转】
    大话Linux内核中锁机制之原子操作、自旋锁【转】
    自旋锁spin_lock和raw_spin_lock【转】
    Linux内核同步机制之(四):spin lock【转】
    spin_lock浅析【转】
  • 原文地址:https://www.cnblogs.com/haimengqingyuan/p/6917873.html
Copyright © 2020-2023  润新知