算法101训练营-链表指定区间反转和K个一组反转
开始之前 这两个的解法思路和反转链表其实差不多,所以放在一章一起解决 链表指定区间反转 之前写过整个链表的反转,主要做法就是 1. 下一个节点指针指向下一个节点 2. 当前节点的 next 属性指向上一个节点 3. 将上一个节点指针指向当前节点 4. 将当前节点指针移动到下一个节点指针指向的节点 描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转。 数据范围 链表长度 0 写到这已经是凌晨 2:21 了,🐕 命要紧,睡觉了,明天起来补 描述 将给出的链… ...
算法101训练营-合并k个已排序的链表
开始之前 刚才做了反转链表,太简单,没挑战,来道 hard 给自己找点不痛快。 描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围 节点总数 0 a b) 然后把遍历数组构造一个新链表... 粗鲁... 太粗鲁了 分治+递归 在实现递归加分治前,我们要实现一个小算法 引申,合并两个已经排序的列表 描述 输入两个递增的链表,单个链表的长度为 n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围 0 <= n <= 1000, 1000 <… ...
反转链表
描述 给定一个单链表的头结点 pHead(该头节点是有值的,比如在下图,它的 val 是 1,长度为 n,反转该链表后,返回新链表的表头。 数据范围: 0 <= n <= 1000 要求: 空间复杂度 O(1),时间复杂度 O(n)。 如当输入链表{1,2,3}时, 经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。 以上转换过程如下图所示: 代码 代码解释 1. 首先检查入参,假如传入一个空链表或者链表中只有一个值,那就不需要反转,直接返回传入的链表即可。… ...
MDN速刷 JS JS指南篇——函数
开始之前 听说,函数是 JS 中的一等公民 定义 原始类型作为参数传入函数没有关系,引用类型作为参数传入,传入的类似于 C 语言指针,会改变指针指向的地址内的值。 函数表达式 将函数作为参数传递给另一个函数时,函数表达式很方便。 条件定义 调用 每个 JavaScript 函数实际上都是一个 Function 对象。 实例方法有 bind(), call(), apply(), toString(); 函数作用域 在函数内定义的变量不能在函数之外的任何地方访问,一个函数可以访… ...
MDN速刷 JS JS指南篇——循环与迭代
开始之前 今日无事,先搞基础,算法说了好几天没去看,今晚一定要看看,再记录一篇算法的文章出来。 for 语句 过 do...while 语句 过 while 语句 过 label 语句 continue outPoint 语句的作用是跳出当前循环,并跳转到 outPoint(标签)下的 for 循环继续执行。 类比 C 的 goto break continue 过 for...in for...of 过 总结 除了 label 语句,其他的都是常用的,而 label 语句会… ...