首页 > 试题广场 >

将单向链表按某值划分为左边小,中间相等,右边大的形式

[编程题]将单向链表按某值划分为左边小,中间相等,右边大的形式
  • 热度指数:4596 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个链表,再给定一个整数 pivot,请将链表调整为左部分都是值小于 pivot 的节点,中间部分都是值等于 pivot 的节点, 右边部分都是大于 pivot 的节点。
除此之外,对调整后的节点顺序没有更多要求。

输入描述:
第一行两个整数 n 和 pivot,n 表示链表的长度。

第二行 n 个整数 ai 表示链表的节点。


输出描述:
请在给定的函数内返回链表的头指针。
示例1

输入

5 3
9 0 4 5 1

输出

1 0 4 5 9

备注:

头像 uzzzz~
发表于 2022-03-10 16:40:53
思路:将链表划分为三个链表,最后再相连。注意相连的判断,如果中间没有,要直接连右边。 # include <bits/stdc++.h> using namespace std; struct list_node{ int val; struct list_node * 展开全文
头像 总之就是非常可爱
发表于 2022-02-09 13:35:52
# include <bits/stdc++.h> using namespace std; struct list_node{     int val;     struct list_node * next; }; int pivot; 展开全文