56、鏈表中倒數(shù)第K節(jié)點
因為之前做了好幾道雙指針的題间学,所以聯(lián)想到這道題也能用雙指針。
但是不知道為什么不能AC
class Solution:
def FindKthToTail(self, head, k):
# write code here
if not head:
return None
fast, slow = head, head
for i in range(1, k):
if not fast:
return None
fast = fast.next
while fast.next:
fast = fast.next
slow = slow.next
return slow
57印荔、合并兩個排序鏈表
class Solution(object):
def mergeTwoLists(self, l1, l2):
head = ListNode(-1)
temp = head
while l1 and l2:
if l1.val <= l2.val:
temp.next = l1
l1 = l1.next
temp = temp.next
else:
temp.next = l2
l2 = l2.next
temp = temp.next
if l1:
temp.next = l1
if l2:
temp.next = l2
return head.next
58低葫、翻轉(zhuǎn)鏈表
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head:
return None
a, b, c = None, head, head.next
while c:
b.next = a
a, b, c = b, c, c.next
b.next = a
return b
class Solution:
def HasSubtree(self, pRoot1, pRoot2):
# write code here
if pRoot1 == None or pRoot2 == None:
return False
return self.isSubtree(pRoot1, pRoot2)
def isSubtree(self, p1, p2):
if p2 == None:
return True
if p1 == None:
return p1 == p2
res = False
if p1.val == p2.val:
res = self.isSubtree(p1.left, p2.left) and self.isSubtree(p1.right, p2.right)
return res or self.isSubtree(p1.left, p2) or self.isSubtree(p1.right, p2)
60仍律、數(shù)值的整數(shù)次方
看了別人的代碼氮采,利用右移一位運算代替除以2
利用位與運算代替了求余運算法%來判斷一個數(shù)是奇數(shù)還是偶數(shù)
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if exponent == 0:
return 1
if exponent == 1:
return base
if exponent == -1:
return 1/base
ans = self.Power(base, exponent >> 1)
ans = ans * ans
if exponent & 1 == 1:
ans = ans * base
return ans