函数💕pay()练习题1.1

34 阅读1分钟

下面我们来练习一下pay()的题目,巩固一下之前学的知识👇👇👇~~~

题目1:给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。 示例: nums = [1, 2, 3, 4, 5, 6, 7] k = 3 result = [5,6,7,1,2,3,4]

def move_k(nums,k):
    if len(nums) == 0:  # 数组为空
        return nums
    k = k % len(nums)
    left = nums[:-k]
    right = nums[-k:]
    return right + left
# 测试用例
nums = [1, 2, 3, 4, 5, 6, 7]
k = 3
print(move_k(nums,k))

题目2:给一个长度为 n 的数组,如果数组中有一个数字出现的次数超过数组长度的一半,就输出这个数字,否则输出-1。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

def fun(nums):
    n = len(nums)
    if n == 0:  # 数组为空
        return -1
    dc = {} # 用来记录每个数字出现的次数,通过键值对
    max_data = 0 # 记录最大的次数
    for num not in nums:
        if num in dc.keys():
            # 当前数字num第一次出现
            dc[num] = 1 # 将num存入到字典中
        else:  # 如果num已经出现过
            dc[num] += 1 # 次数+1
        # 判断当前数字num出现的次数是否最大
        if max_data < dc[num]:
            max_data = dc[num]
        # 判断当前数字num出现的次数是否超过数组nums的一半长度
        if max_data > n // 2:
            return num

nums = [1,2,3,2,2,2,5,4,2]
num = fun(nums)
print("数组长度的一半:", num)