leetcode 24. Swap Nodes in Pairs \ 21. Merge Two Sorted Lists
来源:互联网 发布:阿里云概念股 编辑:程序博客网 时间:2024/06/06 11:24
- swap nodes in pairs
- Merge Two Sorted Lists
24. swap nodes in pairs
这个算法就是把前后节点交换为知,记住每个节点存储在内存中某个地方,指向每个节点的地址是一样,不一样的是每个节点的下一个节点的地址,改变这个即可。
法一:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode *node_walker = head; ListNode *node_next = NULL; ListNode *node_cur = NULL; ListNode *node_pre= NULL; ListNode *node_next2 = NULL; while(node_walker && node_walker->next) { node_next = node_walker->next; node_next2 = node_next->next; node_cur = node_walker; if(node_walker == head) { head = node_next; head->next = node_cur; node_cur->next = node_next2; } else { node_pre->next = node_next; node_walker->next = node_next2; node_next->next = node_walker; } node_pre = node_walker; node_walker = node_next2; } return head; }};
法二:
上面的算法可以写得更加简洁,那就是:
这里有一个巧妙的用法就是它索引指向指针的指针,然后修改这个指针的话就会使得值的赋值过程减少一个阻碍。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode **head_new = &head, *node_cur = NULL, *node_next = NULL; while ((node_cur = *head_new) && (node_next = node_cur->next)) { node_cur->next = node_next->next; node_next->next = node_cur; *head_new = node_next; head_new = &(node_cur->next); } return head; }};
21. Merge Two Sorted Lists
法一:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *head = NULL; ListNode *tmp = NULL; while(l1 != NULL && l2 != NULL) { if(l1->val <= l2->val) { if(!head) { head = l1; tmp = head; } else { tmp->next = l1; tmp = l1; } l1 = l1->next; } else { if(!head) { head = l2; tmp = head; } else { tmp->next = l2; tmp = l2; } l2 = l2->next; } if(!l1) { tmp->next = l2; break; } if(!l2) { tmp->next = l1; break; } } head = (head == NULL)?((l1 == NULL)?l2:l1):head; return head; }};
法二:
精简版:
class Solution {public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode dummy(INT_MIN); ListNode *tail = &dummy; while (l1 && l2) { if (l1->val < l2->val) { tail->next = l1; l1 = l1->next; } else { tail->next = l2; l2 = l2->next; } tail = tail->next; } tail->next = l1 ? l1 : l2; return dummy.next; }};
0 0
- leetcode 24. Swap Nodes in Pairs \ 21. Merge Two Sorted Lists
- leetcode 第22-24题Merge k Sorted Lists & Swap Nodes in Pairs & Reverse Nodes in k-Group
- 【Leetcode】Merge Two Sorted Lists in JAVA
- 21. Merge Two Sorted Lists leetcode(lists)
- [LeetCode]24.Swap Nodes in Pairs
- 24. Swap Nodes in Pairs Leetcode Python
- LeetCode --- 24. Swap Nodes in Pairs
- LeetCode 24.Swap Nodes in Pairs
- [Leetcode] 24. Swap Nodes in Pairs
- 【LeetCode】24.Swap Nodes in Pairs
- [leetcode] 24.Swap Nodes in Pairs
- **LeetCode 24. Swap Nodes in Pairs
- 24. Swap Nodes in Pairs LeetCode
- leetcode 24. Swap Nodes in Pairs
- leetcode 24. Swap Nodes in Pairs
- LeetCode--24. Swap Nodes in Pairs
- leetcode 24. Swap Nodes in Pairs
- 【LeetCode】24. Swap Nodes in Pairs
- 《iOS移动开发从入门到精通》图书连载15:数组
- poj1753
- jquery-validate验证框架(来自菜鸟编程)
- 同源策略及跨域的问题
- 2017年Python技能图谱(价值498元)-熊盼
- leetcode 24. Swap Nodes in Pairs \ 21. Merge Two Sorted Lists
- paackage.json
- bzoj 2961
- 浅论冒泡排序算法
- Mock.js进行独立于后端的前端开发
- MySQL自学笔记1--基础知识
- 大数阶乘的处理
- 如何准备英语四级考试
- C++字符串