剑指offer11
题目描述:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。
示例:
解答:
class Solution:
def minArray(self, numbers: List[int]) -> int:
return min(numbers)
剑指offer15
题目描述:
请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
示例:
解答:
class Solution:
def hammingWeight(self, n: int) -> int:
return bin(n).count('1')
剑指offer21
题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
解答:
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
list1,list2=[],[]
for i in nums:
if i%2==1:
list1.append(i)
else:
list2.append(i)
return list1+list2
剑指offer22
题目描述:
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。
示例:
解答:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
res=[]
while head:
res.append(head)
head=head.next
return res[-k]
剑指offer25
题目描述:
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例:
解答:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
p=head=ListNode(None)
while l1 and l2:
if l1.val<=l2.val:
p.next,l1=l1,l1.next
else:
p.next,l2=l2,l2.next
p=p.next
p.next=l1 if l1 else l2
return head.next