0116leetcode刷题5道python

剑指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

猜你喜欢

转载自blog.csdn.net/yeqing1997/article/details/112555851