2020年5月3日
摘要: 题目: K 个一组翻转链表:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 示例: 给你这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2-> 阅读全文
posted @ 2020-05-03 23:12 桌子哥 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 题目: 有序链表转换二叉搜索树:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 看到二叉树要想到用递归的思想,为了找到根节点,使用双指针法,快指针是慢指针速度的二倍,快指针到 阅读全文
posted @ 2020-05-03 21:24 桌子哥 阅读(681) 评论(0) 推荐(0) 编辑
摘要: 题目: 合并K个排序链表:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 思路: 暴力法 程序: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.va 阅读全文
posted @ 2020-05-03 17:29 桌子哥 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题目: 排序链表:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 思路: 看到时间复杂度为 O(n log n) ,想到使用二分法,但是在链表里的二分法还没有想到思路,先使用懒人方法做一下,竟然通过了,哈哈哈,万万没想到,之后再补按照要求的程序。 程序1:这个程序是不符合 阅读全文
posted @ 2020-05-03 16:47 桌子哥 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 题目: 对链表进行插入排序:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 思路: 使用数组,也属于懒人做法,最后使用尾插 阅读全文
posted @ 2020-05-03 16:23 桌子哥 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 题目: 重排链表:给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路: 使用了懒人做法,使用了栈,应该还有更好的方法,想到后做补充。 程序: # Defin 阅读全文
posted @ 2020-05-03 11:09 桌子哥 阅读(876) 评论(0) 推荐(0) 编辑
摘要: 题目: 环形链表 II:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 进阶:你是否可以不用 阅读全文
posted @ 2020-05-03 10:50 桌子哥 阅读(284) 评论(0) 推荐(0) 编辑