链表
📌 奇偶链表
· ☕ 1 分钟
代码很简单,但最初的时候,返回链表头前的一句我是这么写的:odd->next = head->next,没想明白为什么,程序就因为卡这里超时了&hell

📌 链表求和
· ☕ 2 分钟
读完题,一开始的思路不是很清晰,于是用啰嗦的伪代码整理了一下逻辑: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* 逐位相加,控制好进位的处理即可 */ //定义一个暂时存储每一轮求

📌 二进制链表转整数
· ☕ 1 分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ /** 二进制->十进制: * ...((((0*2+val)*2+val))*2+val)... */ int getDecimalValue(struct ListNode* head){ int sum = 0; struct ListNode* curr = head; while(curr){ sum = sum*2 + curr->val; curr = curr->next; } return

📌 从尾到头打印链表
· ☕ 1 分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * Note: The returned array must be malloced,

📌 链表相交
· ☕ 1 分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { if(headA == headB) return headA; struct ListNode* tempA = headB; struct ListNode* tempB = headA; while(tempA != tempB){ if(headA){ headA = headA->next; }else{ tempA

📌 删除链表的结点
· ☕ 1 分钟
删除结点是链表的基本维护操作,此题采用双指针遍历,再注意首尾边界条件即可。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 /** * Definition for singly-linked list. * struct ListNode

📌 判断链表是否有环
· ☕ 1 分钟
自己一开始直接试了试暴力解法,即用两层循环O(n^2)走一遍,超时了…为了验证自己的逻辑没写错,我还特意构造了一个用例来测试… 这道题

📌 反转链表
· ☕ 1 分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ /* 三指针法 */ struct ListNode* reverseList(struct ListNode* head){ if(!head){ return head; }else if(!head->next){ return head; }else if(!head->next->next){ head->next->next = head; struct ListNode* temp