赞
踩
约瑟夫环问题 13个人围成一圈,从第一个人开始1、2、3顺序循环报数,凡数到3的人退出圈子,输出最后留在圈中的人的序号。
- def josephus(n):
- # 创建人员列表
- people = list(range(1, n + 1))
-
- # 初始化索引和报数计数器
- index = 0
- count = 0
-
- while len(people) > 1:
- count += 1
- # 报数到3时淘汰当前人员
- if count == 3:
- people.pop(index)
- count = 0
- else:
- index = (index + 1) % len(people)
-
- return people[0]
# 输入人数 n = 13 # 调用函数计算最后留下的人的编号 result = josephus(n) # 输出结果 print("最后留下的是原来第{}号的人".format(result))
#给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 #[全排列问题](https://leetcode.cn/problems/permutations/description/)
- class Solution:
- # 主函数,输入一组不重复的数字,返回它们的全排列
- def permute(self, nums: List[int]) -> List[List[int]]:
- #记录结果
- res=[]
- # 记录「路径」
- track = []
- # 「路径」中的元素会被标记为 true,避免重复使用
- used = [False for _ in range(len(nums))]
- # 路径:记录在 track 中
- # 选择列表:nums 中不存在于 track 的那些元素(used[i] 为 false)
- # 结束条件:nums 中的元素全都在 track 中出现
- def backtrack(nums, track, used):
- #触发结束条件
- if len(track)==len(nums):
- # res.append(track[:])
- res.append(track.copy())
- return
- for i in range(len(nums)):
- # 排除不合法的选择
- if used[i]:
- continue
- # 做选择
- track.append(nums[i])
- used[i]=True
- # 进入下一层回溯树
- backtrack(nums,track,used)
- # 取消选择
- track.pop()
- used[i]=False
- backtrack(nums, track, used)
- return res
#给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,##同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。 #注意:答案中不可以包含重复的三元组。
- class Solution:
- def threeSum(self, nums: List[int]) -> List[List[int]]:
- nums.sort()
- ans = []
- n = len(nums)
- for i in range(n - 2):
- x = nums[i]
- if i > 0 and x == nums[i - 1]:
- continue
- j = i + 1
- k = n - 1
- while j < k:
- s = x + nums[j] + nums[k]
- if s > 0:
- k -= 1
- elif s < 0:
- j += 1
- else:
- ans.append([x, nums[j], nums[k]])
- j += 1
- while j < k and nums[j] == nums[j - 1]:
- j += 1
- k -= 1
- while k > j and nums[k] == nums[k + 1]:
- k -= 1
- return ans
我面试的是测试岗位,只要充分准备,技术面不难。
后续和联系人沟通,他建议,如果遇到了不熟悉的算法题,如果实在不会,可以与面试官沟通更换题目。
现在正在等待后续审批。
2月6日,终于收到offer
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。