题目意思挺简单的,解法也好想,但是在链表处不熟悉,还是容易出问题:
题意是,把链表重排,排成先奇数点后偶数点的链表,自然想到了要用两个指针。
但是由于奇偶排完之后还需要连接起来,因此还需要一个temp指针,用于存储偶数的第一位。
另外,一开始写的时候总是runtime error,主要是因为忘记改变指针的next之后,指针自己的位置也要变
因此做题前还是要好好想清楚比较好。
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if(!head) return head;
ListNode* odd=head;
ListNode* even=head->next;
ListNode* temp=even;
while(even!=NULL && even->next!=NULL ){ //注意判断为空的顺序
odd->next=odd->next->next;
odd=odd->next; //忘记跳转odd和even的位置了
even->next=even->next->next;
even=even->next;
}
odd->next=temp; //head->next此时已经变了,所以需要另外找一个temp变量存储
return head;
}
};
简化版本
class Solution {
public:
int removeDuplicates(vector<int> &nums) {
if(nums.size() < 2) return nums.size();
int len = 1;
for(int i = 1; i < nums.size(); i++){
if(nums[i] != nums[i - 1])
nums[len++] = nums[i];
else
continue;
}
return len;
}
};