摘要: 请判断一个链表是否为回文链表。 示例 1: 示例 2: 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 算法思想: 1、根据回文链表的要求,首先利用快慢指针,找到链表的中间节点(偶数长度取前半部分的最后一个节点)。 2、接下来有两种办法进行链表值得比对: 方法一、从中间节点的 阅读全文
posted @ 2019-07-31 17:40 JiaMeng991010 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 来源:力扣(LeetCode 阅读全文
posted @ 2019-07-30 19:02 JiaMeng991010 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 示例 2: 示例 3: 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O( 阅读全文
posted @ 2019-07-30 18:30 JiaMeng991010 阅读(821) 评论(0) 推荐(0) 编辑
摘要: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 示例 1: 示例 2: 示例 3: 直接上代 阅读全文
posted @ 2019-07-30 16:45 JiaMeng991010 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到 阅读全文
posted @ 2019-07-29 15:27 JiaMeng991010 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 删除链表中等于给定值 val 的所有节点。 示例: 直接上代码: 遍历链表,找出每个待删除节点前的每一个节点。 特殊情况:第一个节点就是待删除节点,要进行单独的操作。 注意点:当输入1->1时,删除完第一个节点,剩下的链表的头节点又是待删除节点。 阅读全文
posted @ 2019-07-29 15:19 JiaMeng991010 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题目: 反转一个单链表。 示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 题解: 先上代码: 以上为递归翻转链表的代码 递归终止条件:1、head为空。2、head.next为空 递归过程:我们令新的头节点为newHead,新的头节点newHead应该是head 翻转完之后的 阅读全文
posted @ 2019-07-28 16:43 JiaMeng991010 阅读(293) 评论(0) 推荐(0) 编辑
摘要: Python中很多名称比较古怪,开头和结尾都是两个下划线。这样的拼写表示名称有特殊意义,因此绝不要在程序中创建这样的名称。这样的名称中大部分都是魔法(方法)的名称。如果你的对象实现了这些方法,他们将在特定情况下(具体是何种情况取决于方法的名称)被Python调 用,而几乎不需要直接调用。 1、构造函 阅读全文
posted @ 2019-07-28 10:06 JiaMeng991010 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 编写程序时,通常能够区分正常和异常情况。为了处理这些异常,可在每个可能出现异常的地方都使用上条件语句,但这样大大降低了程序的可读性,那么怎么解决哪?Python提供强大的替代解决方案——异常处理机制。 1、异常是什么? Python使用异常对象来表示异常状态,并在遇到错误时引发异常,异常对象未被处理 阅读全文
posted @ 2019-07-26 17:09 JiaMeng991010 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 1、对象魔法 在面对对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法。 使用对象而非全局变量以及函数的原因有多个,而最重要的好处不过以下几点: 多态:可对不同类型的对象执行相同的操作,而这些操作全部能够正常运行。 封装:对外部隐藏有关对象工作的具体细节。 继承:可基于 阅读全文
posted @ 2019-07-25 17:32 JiaMeng991010 阅读(295) 评论(0) 推荐(0) 编辑