zoukankan      html  css  js  c++  java
  • js刷题:leecode 25

    原题:https://leetcode.com/problems/reverse-nodes-in-k-group/

    题意就是给你一个有序链表。如1->2->3->4->5,还有一个输入K,让你以k为长度单位一段一段的翻转链表,如果长度不够k的部分则不翻转。

    比如k=2,就两个两个翻转2->1->4->3->5,剩下5不够两个就不翻转,所以k=3的结果为3->2->1->4->5

    解题思路:将链表按k分成N段,先探测是否满足k个,若满足则先将这一段翻转,翻转之后各段需要连接,所以要记录上一段的尾部。

    遇到的问题:出现mle的错误,最后发现是在每一段翻转链表时应该将head节点指向空(因为翻转之后就变成了尾巴),如果不指向空则会形成一个环。

    代码

    /**
     * Definition for singly-linked list.
     * function ListNode(val) {
     *     this.val = val;
     *     this.next = null;
     * }
     */
    /**
     * @param {ListNode} head
     * @param {number} k
     * @return {ListNode}
     */
        var reverseKGroup = function(head, k) {
        if(head===null||head.next===null){
            return head ;
        }
        if(k<=1){
            return head ;
        }
        var current_node ;
        var current_next ;
        var iterator_node = head ;
        var group_head ;
        var pre_group_tail = head ;
        var no_k_element = false ;
        var fst = true ;
        var ans = head ;
        while(iterator_node!==null&&!no_k_element){
            current_node = iterator_node ;
            current_next = iterator_node.next ;
            if(!fst){
                pre_group_tail.next = iterator_node ;
            }
            //test is there k nodes left,and iterator_node mv k steps to position k+1
            for(var i=0;i<k;i++){
                if(iterator_node.next===null&&i!=(k-1)){
                    no_k_element = true ;
                    break ;
                }
                iterator_node  = iterator_node.next ;
            }
            if(!no_k_element){
                current_node.next = null ;
                group_head = current_node ;
                var temp_group_node ;
                for(var j=0;j<k-1;j++){
                    temp_group_node = current_next.next ;
                    current_next.next = current_node ;
                    current_node = current_next ;
                    current_next = temp_group_node ;
                }
                if(!fst){
                    pre_group_tail.next = current_node;
                    pre_group_tail = group_head ;
                }else{
                    fst = false ;
                    ans = current_node ;
                }
            }
        }
        return ans ;
        };
  • 相关阅读:
    Windows Media Player Audio normalize wmp音量规格化
    IE6、IE7、IE8不支持XHTML,不过没关系
    w3.org出现HTML语法错误
    主板bios修改、刷新
    HTML原则:内容放在HTML中,不要依赖CSS
    textarea应使用cols和rows来控制width和height,而不应只使用css
    sata AHCI驱动下载(AMD Intel Nvidia)
    咬文嚼字:中国文字、中国话
    详解W3C标准:html 4.01中的lang属性——实际上它是一个刮胡刀
    热烈欢呼:cnblogs.com博客园首页通过W3C验证
  • 原文地址:https://www.cnblogs.com/maskmtj/p/6349261.html
Copyright © 2011-2022 走看看