搜索
简帛阁>技术文章>反转链表(JS解法)—— 高频面试算法题(字节跳动真题)

反转链表(JS解法)—— 高频面试算法题(字节跳动真题)

题目描述:

输入一个链表,反转链表后,输出新链表的表头。

解题思路:

  1. 设置一个current值等于原链表的表头,preview值记录前一个节点。
  2. 循环遍历原链表,用temp值更新current值,直到cur.next = null。
  3. 返回preview值,因为pre是原链表的最后一个节点,就是反转后的链表的表头,输出即可。

说明:因为题目只要求返回表头,所以实际上并没有真正意义上进行真正的反转链表的操作。假如是给定原链表的表头,返回整个反转完的链表,则需要遍历输出每一个值进入一个空数组,再返回空数组的.reverse()结果即可。

我的解法:

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function ReverseList(pHead)
{<!-- -->
    // write code here
    var pre = null, cur = pHead;
    while(cur){<!-- -->
        var temp = cur.next;
        cur.next = pre;
        pre = cur;
        cur = temp;
    }
    return pre;
}

欢迎大家评论留言讨论或者优化我的解法。

题目描述:输入一个反转链表后,输出新链表的表头。解题思路:设置一个current值等于原链表的表头,preview值记录前一个节点。循环遍历原链表,用temp值更新current值,直到cur
题目描述:判断给定的链表中是否有环扩展:你能给出空间复杂度O(1)的解法么?解题思路:判定链表中是否有环,关键在于这个是不是可以一直循环走下去。那么可以设置两个指针,快指针和慢指针,一个走两步,
目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。题目分析:我们都知道,栈是实行FILO(firstinlastout而队列是实行FIFO(firstinf
题目描述:请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。示例:输入5,4,[1,2,4,4,5]返回值3说明输出位置从1开
题目描述:给定一个,删除的倒数第n个节点并返回的头指针。例如:给出的为:1>2>3>4>5,n2删除了的倒数第n个节点之后,变为1>2>3>5备注:题目保证n一定是有效的请给
206反转1题目描述反转一个单链表。示例:输入:1>2>3>4>5>NULL输出:5>4>3>2>1>NULL进阶:你可以迭代或递归地
众所周知,字节跳动面试非常喜欢考算法。Leetcode官方的企业题库不仅付费,而且量非常大。因此,我从20年7月开始,手动整理牛客面经涉及的Leetcode算法,并按照频度由高到低进行了排列。以
148排序1题目描述在O(nlogn)时间复杂度和常数级空间复杂度下,对进行排序2解题报告针对nlogn的排序算法,主要有快速排序,归并排序和堆排序。其中,堆排序利用了数组的连续特性。所以这里
大家好,我是勾玉!新的一年,祝大家牛气冲天!今天,我们来介绍一道字节跳动面试,它来自字节跳动2019春招研发岗,是一道算法。我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工
我,来自大山。我,不甘平凡。笔者80后,出生在江西一个偏远的山村。虽然出生时已经不是那个温饱都是问题的年代,但是也谈不上有个幸福的童年。家里很穷。幼儿园并没有读,因为家里觉得花那个钱没有必要,小学才开