刚开始看没搞懂啥意思。。。。。。要删除的节点已经给你找出来了,只需要将其覆盖就可以
class Solution:
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
node.val = node.next.val
node.next = node.next.next
206.反转链表
思路1:三个指针
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
pre,cur = None,head
while cur:
tmp = cur.next
cur.next = pre
pre = cur
cur = tmp
return pre
思路:前后指针
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
while head and head.val==val:
head = head.next
if not head: return head
pre,cur = head,head.next
while cur:
if cur.val == val:
pre.next=cur.next
else:
pre = cur
cur = cur.next
return head
思路1:方法可行,但是超出时间限制。。。
#第一思路暴力法
cur1,cur2 = headA,headB
while cur1:
while cur2:
if cur2 is cur1:
return cur2
cur2 = cur2.next
cur2 = headB
cur1 = cur1.next
return cur1
思考:如果出现两者永不相交的情况的话,就会出现死循环。
改进:
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
#第一思路暴力法
cur1,cur2 = headA,headB
while cur1 is not cur2:
cur1 = cur1.next if cur1 else headB
cur2 = cur2.next if cur2 else headA
return cur1
思路解读:为什么会出现相互赋值初始头结点的情况?
短链表走到尽头后继续走长链表,就相当于短链表+长链表。长链表走到尽头后又走短链表,相当于长链表+短链表。所以重新走两次其实本质上还是相当于走两次新的拼接的互补链表,一定会找到交点。
如果出现不相交的情况:
因为headA+headB和headB+ headA长度一定是相等的。所以最后一定会出现同时为None的情况来确保不会出现死循环。
方法2:字典模拟哈希表
将其中一个链表存储到字典中,另一个遍历,看是否存在于字典,若存在,则说明有共同节点;若不存在,则说明没有共同节点。
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
#字典模拟哈希表
dic = {}
cur1,cur2 = headA,headB
while cur1:
dic[cur1] = 1
cur1 = cur1.next
while cur2:
if cur2 in dic:
return cur2
cur2 = cur2.next
return cur2
方法1:将值读出存储为字符串
class Solution:
def isPalindrome(self, head: ListNode) -> bool:
str1 = ''
cur = head
while cur:
str1 += (str(cur.val))
cur = cur.next
num = len(str1)
return str1 == str1[::-1]
剑指offer22.链表中倒数第k个节点
方法1:
class Solution:
def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
count = 1-k
cur = head
while cur:
cur = cur.next
count +=1
cur = head
while count:
if count == 1: return cur
count -= 1
cur = cur.next
前言 好久没冒泡了,算起来估计有快半年没更新博客了,估计是我第一次停更如此之...
本文实例为大家分享了Javascript实现打鼓效果的具体代码,供大家参考,具体内容...
在网上看到很多问题是关于如何学习jsp的,正好网上看到一篇关于学习jsp的文章,...
橡皮擦一个逗趣的互联网高级网虫。新的系列让我们一起进入 Django 世界。 滚雪球...
在某些场景中,我们希望在Linux服务器(CentOS / RHEL)上的同一网卡分配来自不同V...
前言 并发编程从操作系统底层工作的整体认识开始 深入理解Java内存模型(JMM)及vo...
是谁?从中国深圳走向全球; 是谁?保障1500多张网络正常运行; 是谁?服务170多...
我们常见的区块链钱包有非确定性钱包和确定性钱包两种而我们通常创建的脱离节点...
本文实例讲述了ASP.NET编程简单实现生成静态页面的方法。分享给大家供大家参考,...
主题:.NET2.0环境下的Ajax选型和应用 研究需要解决的问题: 1 Ajax 应用框架的...