1. 给定一个包含n+1个整数是数组Nums,其数字在1-n之间(包含1和N),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数。
重复的整数是: 2
def find_duplicate(nums):
tortoise = nums[0]
hare = nums[0]
while True:
tortoise = nums[tortoise]
hare = nums[nums[hare]]
if tortoise == hare:
break
ptr1 = nums[0]
ptr2 = tortoise
while ptr1 != ptr2:
ptr1 = nums[ptr1]
ptr2 = nums[ptr2]
return ptr1
# 示例输入
nums = [1, 3, 4, 2, 2]
duplicate_number = find_duplicate(nums)
print("重复的整数是:", duplicate_number)
2.找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
[5, 6, 10, 12, 15, 18, 20, 24, 25, 35, ........,9978, 9980, 9984, 9985, 9995, 9996, 10000]
def find_number():
number =[]
for i in range(1,10001):
if (i%5==0 or i%6==0) and not (i%5==0 and i%6==0):
number.append(i)
return number
res = find_number()
print(res)
3.写一个方法,计算列表所有偶数下标元素的和(注意返回值)
所有偶数下标元素的和为: 25
def sum_even_index_elements(nums):
total_sum = 0
for i in range(len(nums)):
if i % 2 == 0:
total_sum += nums[i]
return total_sum
# 示例输入
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = sum_even_index_elements(nums)
print("所有偶数下标元素的和为:", result)
4.某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),问题:共有多少种走法?
棋盘大小为 3 行 4 列时的走法总数为: 10
def unique_paths(m, n):
dp = [[1] * n for _ in range(m)]
for i in range(1, m):
for j in range(1, n):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
return dp[m-1][n-1]
# 棋盘大小为3行4列的示例
m = 3
n = 4
total_paths = unique_paths(m, n)
print("棋盘大小为", m, "行", n, "列时的走法总数为:", total_paths)