文章目录
Python小白 Leetcode刷题历程 No.86-No.90 分隔链表、扰乱字符串、合并两个有序数组、格雷编码、子集Ⅱ
写在前面:
作为一个计算机院的大学生,总觉得仅仅在学校粗略的学习计算机专业课是不够的,尤其是假期大量的空档期,作为一个小白,实习也莫得路子,又不想白白耗费时间。于是选择了Leetcode这个平台来刷题库。编程我只学过基础的C语言,现在在自学Python,所以用Python3.8刷题库。现在我Python掌握的还不是很熟练,算法什么的也还没学,就先不考虑算法上的优化了,单纯以解题为目的,复杂程度什么的以后有时间再优化。计划顺序五个题写一篇日志,希望其他初学编程的人起到一些帮助,写算是对自己学习历程的一个见证了吧。
有一起刷LeetCode的可以关注我一下,我会一直发LeetCode题库Python3解法的,也可以一起探讨。
觉得有用的话可以点赞关注下哦,谢谢大家!
········································································································································································
题解框架:
1.题目,难度
2.题干,题目描述
3.题解代码(Python3(不是Python,是Python3))
4.或许有用的知识点(不一定有)
5.解题思路
6.优解代码及分析(当我发现有比我写的好很多的代码和思路我就会写在这里)
········································································································································································
No.86.分隔链表
难度:中等
题目描述:
题解代码(Python3.8)
class Solution:
def partition(self, head: ListNode, x: int) -> ListNode:
dummy1 = ListNode(-1)
dummy2 = ListNode(-1)
p1 = dummy1
p2 = dummy2
while head:
if head.val < x:
p1.next = head
p1 = p1.next
else:
p2.next = head
p2 = p2.next
head = head.next
p2.next = None
p1.next = dummy2.next
return dummy1.next
或许有用的知识点:
当处理链表且需要考虑空链表时,我们或许可以设置一个哑结点,即dummy=LIstNode(-1)。
解题思路:
这道题在一个链表上操作可能比较复杂,但是分成两个链表操作就非常简单了。我们设置dummy1和dummy2两个哑节点,令p1和p2为其索引指针,将head中小于x的元素通过p1储存进链表dummy1中,其余通过p2储存进链表dummy2中。最后将dummy1和dummy2相连并输出即可。
No.87.扰乱字符串
难度:困难
题目描述: