其實真的是很基本的題目 QQ
不過我寫的好像贅步很多啊奇怪XD
別人的迴圈怎麼只要四行呢 XD
但是這次submit 之後竟然是0ms 吶擊敗全部人的速度吶
雖然明知是bugXD 也沒有比較的意義XD
還是存檔紀念一下哈哈哈
(果然第二次跑就要4ms了噗)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head) {
if (head == NULL || head->next == NULL)
return head;
struct ListNode *p0, *p1, *p2;
p0 = NULL;
p1 = head;
p2 = p1->next;
while (p2 != NULL)
{
struct ListNode* tmp;
tmp = p2->next;
p1->next = p0;
p2->next = p1;
p0 = p1;
p1 = p2;
p2 = tmp;
}
p1->next = p0;
return p1;
}
改了一下, 也可以四行處理完了, 開薰!!!
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head) {
if (head == NULL || head->next == NULL)
return head;
struct ListNode *p0, *p1, *p2;
p0 = NULL;
p1 = head;
p2 = p1->next;
while (p2 != NULL)
{
p1->next = p0;
p0 = p1;
p1 = p2;
p2 = p2->next;
}
p1->next = p0;
return p1;
}
20230617 更新
與時俱進~發現有更精簡的寫法XD
之一是要處理最後一步,如果是上面的寫法,在離開迴圈後要記得把最後一個pointer 再往前指;如果是下面的寫法,因為往回指的部份已經寫在迴圈裡了,那就變成回傳的ptr會變成前中後的前,因為他們已經往後shift 了!!! 真是眉角很多啊QQ
struct ListNode* reverseList(struct ListNode* head){
struct ListNode* p1, *p2, *p3;
if (head == NULL || head->next==NULL)
return head;
p1=NULL;
p2=head;
p3=NULL;
while(p2 != NULL)
{
p3=p2->next;
p2->next=p1;
p1=p2;
p2=p3;
}
return p1;
}
20230816 再次更新
面試又GG了,竟然還是忘記把最後一根往回指XD 我真的是對我自己很失望T—T
改成 pre , cur, 跟next 的寫法,感覺比較容易看懂 ?!
struct ListNode* reverseList(struct ListNode* head){
if (head == NULL || head->next == NULL)
return head;
struct ListNode *pre , *cur, *next;
pre = NULL;
cur = head;
next = head->next;
while (next != NULL)
{
cur->next = pre;
pre = cur;
cur = next;
next=next->next;
}
cur->next = pre;
return cur;
}
(每次回圈裡處理QQ)
struct ListNode* reverseList(struct ListNode* head){
if (head == NULL || head->next == NULL)
return head;
struct ListNode *pre , *cur, *next;
pre = NULL;
cur = head;
next = head->next;
while (cur != NULL)
{
next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
return pre;
}
「20240130再再次更新」
不得了,我已經可以越寫越少行了XD 我真是對我自己的進步感到很感動(痛哭流涕)
雖然厲害的offer還是都無法到我身邊啊嗚嗚嗚嗚嗚
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
struct ListNode *pre, *curr, *next;
pre = NULL;
curr = head;
while (curr != NULL)
{
next = curr->next;
curr->next = pre;
pre = curr;
curr = next;
}
return pre;
}
沒有留言:
張貼留言