资讯专栏INFORMATION COLUMN

每日一道算法题

The question / 2263人阅读

摘要:遇到的坑刚拿到这道题就直接做了这样的判断,可是万一是这个判断就是错误的了。思路二上述算法遍历了两次链表,还额外申请了一个数组空间,效率不高,不如直接就地反转链表,更改每个节点自身的指针。

2018.10.14 来源:剑指offer 题目:反转链表

输入一个链表,反转链表后,输出新链表的表头。
思路一:
把所有链表内容都输入到一个数组,再次遍历链表,得到数组反转后的值,最后输出原来的head,只是值变了。
遇到的坑:
刚拿到这道题就while(currentNode.next)直接做了这样的判断,可是万一head是null,这个判断就是错误的了。就导致了虽然自己测试的时候代码是对的。但是牛客网的编辑器却一直通不过。

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function ReverseList(pHead)
{
    // write code here
    var arr = [];
    var currentNode = pHead;
    while(currentNode) {
        arr.push(currentNode.val);
        currentNode = currentNode.next;
    }
    currentNode = pHead;
    while(currentNode) {
        currentNode.val = arr.pop();
        currentNode = currentNode.next;
    }
    return pHead;
}

思路二:
上述算法遍历了两次链表,还额外申请了一个数组空间,效率不高,不如直接就地反转链表,更改每个节点自身的next指针。

function ReverseList(pHead)
{
    if(!pHead) return pHead;
    var prev = null;
    var next = null;
    while(true) {
        //保存上次
        next = pHead.next;
        pHead.next = prev;
        if(next === null) break;
        prev = pHead;
        pHead = next;
    }
    
    return pHead;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98358.html

相关文章

  • 每日一道算法 - LetterChanges(easy-4)

    摘要:更多的小算法练习,可以查看我的文章。规则使用语言,使用函数获取传递的参数并使用以下算法对其进行修改。将字符串中的每个字母替换为字母表后面的字母即变为,变为。然后将这个新字符串,,,,中的每个元音大写,并最终返回此修改后的字符串。 虽然都是很简单的算法,每个都只需5分钟左右,但写起来总会遇到不同的小问题,希望大家能跟我一起每天进步一点点。更多的小算法练习,可以查看我的文章。 规则 Usi...

    mo0n1andin 评论0 收藏0
  • 每日一道算法 - 反转字符串(easy-3)

    摘要:规则使用语言,让函数获取传递的参数,并以相反的顺序返回字符串。测试用例思路方法通过把字符串转换成数组,并使用数组的反转数组,然后使用重新拼接成字符串方法向后循环字符串或字符数组以生成新字符串 虽然都是很简单的算法,每个都只需5分钟左右,但写起来总会遇到不同的小问题,希望大家能跟我一起每天进步一点点。更多的小算法练习,可以查看我的文章。 规则 Using the JavaScript l...

    xfee 评论0 收藏0
  • 每日一道算法 - LongestWord(easy-1)

    摘要:规则使用语言,让函数获取传递的参数并返回字符串中的最大单词。忽略字符串中标点符号并假设不会为空。测试用例思路通过过滤字符串,并把字符串根据空格符转换成字符串数组通过循环把获取字符串数组中的长度最长的字符串 虽然都是很简单的算法,每个都只需5分钟左右,但写起来总会遇到不同的小问题,希望大家能跟我一起每天进步一点点。更多的小算法练习,可以查看我的文章。 规则 Using the JavaS...

    plokmju88 评论0 收藏0
  • 每日一道算法--二维数组中的查找--python

    摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...

    番茄西红柿 评论0 收藏0
  • 每日一道算法--二维数组中的查找--python

    摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...

    luck 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<