题目描述
把一个链表中最小的值的节点放到链表首部。不能只是单纯改变值,也不能添加额外节点。
输入样例
[10,1, 2, 3, 4, 5,-9]
输出样例
[-9, 10, 1, 2, 3, 4, 5]
C++ 代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
auto p=head;
int minnum=head->val; //找到链表中值最小的节点
while(p) //首先遍历一遍链表
{
if(p->val<minnum)
{
minnum=p->val;
}
p=p->next;
}
p=head;
auto q=head->next;
while(q) //找到这个节点,把它放到最前边
{
if(q->val==minnum)
{
p->next=q->next;
q->next=head;
head=q;
break;
}
else{
p=q;
q=q->next;
}
}
return head;
}
};
jbc, sb, jbl
joker
真不错
0v0
伞兵啊!