题目分类 题目编号
链表的删除 203、237、19
链表的遍历 430
链表的旋转与反转 61、24、206、92、25
链表高精度加法 2、445
链表的合并 21、23
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ struct ListNode* deleteDuplicates(struct ListNode* head ) { struct ListNode* sec1 = (struct ListNode*)malloc(sizeof(struct ListNode)); sec1->next=head; struct ListNode* sec = sec1; struct ListNode* fir = head; struct ListNode* q = fir->next; if(head == NULL || head->next == NULL) return head; while(q != NULL) { if(fir->val != q->val) { sec = fir; fir = q; q = q->next; } else { while (q->val == q->next->val && q->next != NULL) { q = q->next; } if(q->next == NULL) { sec->next = NULL; return sec1->next; } fir = q->next; sec->next = fir; q = fir->next; } } return sec1->next; }
92. 反转链表 II(反转指定部分链表)
记得考虑left==1的时候的特殊情况。
445. 两数相加 II
23. 合并K个升序链表
用优先队列做,注意for里面的遍历。