zoukankan      html  css  js  c++  java
  • 《剑指offer》JavaScript版13-15题

    13调整数组顺序使奇数位于偶数前面

    问题描述

      输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

    实现思路

      设置两个空数组,arr1,arr2,将奇数存在arr1中,偶数存在arr2中,最后用concat将俩个数组组合。

    代码

    function reorderArray(array)
    {
        var len=array.length;
        var arr1=[],arr2=[];//arr1存放奇数,arr2存放偶数
        for(var i=0;i<len;i++){
            if(arr[i]%2!=0){
                arr1.push(arr[i]);
            }else{
                arr2.push(arr[i]);
            }
        }
        return arr1.concat(arr2);
    }

    14.链表中倒数第k个结点

    问题描述

      输入一个链表,输出该链表中倒数第k个结点。

    实现思路

      设两个指针,先让两个指针都指向头结点,让第一个正向走(k-1)步,到达第k个节点;两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。

    代码

    function FindKthToTail(head,k){
        if(head==null||k<=0){
            return false;
        }
        var p1=head;
        var p2=head;
        for(var i=1;i<k;i++){
            if(p1.next!=null){
                p1=p1.next;
            }else{
                return false;
            }
        }
        while(p1.next!=null){
            p1=p1.next;
            p2=p2.next;
        }
        return p2;
    }

    15 反转链表

    问题描述

      输入一个链表,反转链表后,输出链表的所有元素。

    实现思路

    1. pHead为当前结点,如果当前结点为空的话,直接返回;
    2. pHead为当前结点,pre为当前结点的前一个结点,next为当前结点的下一个结点;
    3. 需要完成的目标是将pre-->pHead-->next1-->next2-->··· ···-->end反转为pre<--pHead<--next1<--next2<--··· ···<--end;
    4. pre结点可以用来反转方向,为了避免反转之后链表断开,用next结点暂时保存next1结点;
    5. 先用next保存pHead的下一个结点信息,保证单链表不会断裂;
    6. 保存之后,让pHead从指向next变成指向pre;
    7. 到此,完成了pre到pHead的反转,即pre<--pHead;
    8. 将pre,pHead,next依次向后移动一个结点。
    9. 循环操作,直到pHead为null,此时pre就是链表的最后一个结点,链表反转完毕,pre为反转后链表的第一个结点。
    10. 输出pre就是反转之后所得的链表。

    代码

    function isEmptyObject(obj) {
      for (var name in obj) {
      return false;
    }
      return true;
    } 
    
    function ReverseList(pHead) {
        if (isEmptyObject(pHead)) {
            return false;
        }
        var pre = null;
        var next = null;
        while (pHead != null) {
            next = pHead.next;
            pHead.next = pre;
            pre = pHead;
            pHead = next;
        }
        return pre;
    }
  • 相关阅读:
    流程控制之if判断
    各种运算符
    输入和输出
    垃圾回收机制(详细)
    3/5 作业
    3/4 作业
    数据类型
    变量
    Checkout 显示 URL /../../.. 不存在
    Tomcat8 访问 manager App 失败
  • 原文地址:https://www.cnblogs.com/jiaxiaonuo/p/7445741.html
Copyright © 2011-2022 走看看