LeetCode第160题: 相交链表
- 先遍历A, 留下足迹, 再遍历B, 找出足迹
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
p1 = headA
while p1 != None:
p1.visited = 1
p1 = p1.next
p1 = headB
while p1 != None:
if hasattr(p1, 'visited'):
return p1
p1 = p1.next
LeetCode160题: 多数元素
- 使用字典存储每个元素出现的次数, 遍历一次数组
class Solution:
def majorityElement(self, nums: List[int]) -> int:
if len(nums) == 0:
return None
length = len(nums)
level = length // 2
dic = {}
for i in range(0, length):
dic[nums[i]] = 1 if nums[i] not in dic.keys() else dic[nums[i]] + 1
if dic[nums[i]] > level:
return nums[i]
LeetCode第206题: 反转链表
- 改变每个结点的指针域即可
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
p1 = None
p2 = head
p3 = head
while p3 != None:
p3 = p3.next
p2.next = p1
p1 = p2
p2 = p3
return p1