链表
Rqff
这个作者很懒,什么都没留下…
展开
-
19. 删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点 与这个题类似 面试题 02.02. 返回倒数第 k 个节点 但是本题要删除节点需要考虑的更多,比如要删head头节点处理的问题。 class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { //设置哑节点(不然删除head节点,找不到头了) ListNode *dummy = new ListNode(0); if(!head原创 2020-05-10 13:49:41 · 78 阅读 · 0 评论 -
面试题 02.02. 返回倒数第 k 个节点
面试题 02.02. 返回倒数第 k 个节点 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 示例: 输入: 1->2->3->4->5 和 k = 2 输出: 4 说明: 给定的 k 保证是有效的。 利用双指针,fast指针先走k个距离,这样两个指针相隔k个位置,当fast指针指向null时,low指针正好指向倒数第k个节点。 class Solution { public: int kthToLast(ListNode* head, int k) {原创 2020-05-10 11:33:15 · 121 阅读 · 0 评论 -
206. 反转链表
面试题24. 反转链表 & 206. 反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 方法一、头插 class Solution { public: ListNode* reverseList(ListNode* head) {原创 2020-05-10 11:17:06 · 92 阅读 · 0 评论 -
234. 回文链表
234. 回文链表 利用快慢指针找中点,头插断链法将后半部分链表逆置,然后依次比较 时间复杂度O(n),空间复杂度为O(1) class Solution { ListNode* reverseList(ListNode* head) { ListNode* prev = NULL; ListNode* curr = head; //头插逆置 while (curr != NULL) { //保存下一个节点,防止原创 2020-05-10 10:42:25 · 119 阅读 · 0 评论 -
147. 对链表进行插入排序
147. 对链表进行插入排序 class Solution { public ListNode insertionSortList(ListNode head) { ListNode dummy = new ListNode(0);//dummy没有直接连接到head上 ListNode pre = dummy; ListNode cur =...原创 2020-02-12 12:59:55 · 141 阅读 · 0 评论