网站开发的可行性研究报告,做网站卖广告挣几百万,个人主页模板psd,广州建网站有哪些1、问题 给你链表的头结点 head #xff0c;请将其按 升序 排列并返回 排序后的链表 。
2、采用例子 输入#xff1a;head [4,2,1,3] 输出#xff1a;[1,2,3,4]
3、实现思路 将链表拆分成节点#xff0c;存入数组使用sort排序#xff0c;再用reduce重建链接
4、具…1、问题 给你链表的头结点 head 请将其按 升序 排列并返回 排序后的链表 。
2、采用例子 输入head [4,2,1,3] 输出[1,2,3,4]
3、实现思路 将链表拆分成节点存入数组使用sort排序再用reduce重建链接
4、具体步骤
1定义链表结构 2定义头结点 3进入函数 1空链表直接返回 2创建空数组当前节点 3进入循环 4将当前节点加入数组 5使用临时变量存取当前节点的下一节点方便后续断开其余节点不丢失 6断开当前节点让当前节点的指针指向空即可 7将临时变量的值赋给当前节点进行下一轮循环
4函数结束后得到各节点节点中其实包含有其后续节点不过不影响进行sort排序通过节点的val值比较即可排序后各节点的next指针为空通过reduce建立联系然后返回数组中的一个即可 5调用函数可查看链表是否正确 5、完整代码
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title排序链表/title
/head
bodyp给你链表的头结点 head 请将其按 升序 排列并返回 排序后的链表 。/pp输入head [4,2,1,3]输出[1,2,3,4]/pscriptclass ListNode{constructor(val, next){this.val valthis.next next}}let head new ListNode(4,new ListNode(2,new ListNode(3,new ListNode(1))))// console.log(head);sortList(head)function sortList(head){// 空链表if(!head)return head;// 创建数组let arr []// 当前节点let cur head// 将链表拆分为数组// 遍历链表while (cur) {// 将当前节点加入链表arr.push(cur)// 将链表后面的节点存入临时变量方便后面断开节点let tmp cur.next// 断开链表节点方便使用sort排序cur.next null// 链表指针后移便于添加下一节点cur tmp}// console.log(arr);// 使用sort排序得到没有联系的有序节点数组使用reduce添加链表联系// p是前一个值,v当前值arr.sort((a,b) a.val-b.val).reduce((p, v) p.next v)// console.log(arr);return arr[0]}/script
/body
/html
6、力扣通过代码
var sortList function(head) {if(!head)return head;// 创建数组let arr []// 将链表拆分为数组let cur head// 遍历链表while (cur) {// 将当前节点加入链表arr.push(cur)// 将链表后面的节点存入临时变量方便后面断开节点let tmp cur.next// 断开链表节点方便使用sort排序cur.next null// 链表指针后移便于添加下一节点cur tmp}// console.log(arr);// 使用sort排序得到没有联系的有序节点数组使用reduce添加链表联系// p是前一个值,v当前值arr.sort((a,b) a.val-b.val).reduce((p, v) p.next v)// console.log(arr);return arr[0]
};