这里写目录标题
- 一、共同路径
- 二、数字列表排序
- 三、给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
一、共同路径
给你一个完整文件名组成的列表,请编写一个函数,返回他们的共同目录路径。
# nums=['/hogwarts/assets/style.css', '/hogwarts/scripts/app.js', 'home/setting.conf']
nums = ['/hogwarts/images/image1.png', '/hogwarts/images/image2.png']
def test1(nums):
nums1 = list(zip(*nums))
print(nums1)
res = ''
for i in nums1:
if len(set(i)) == 1:
res += i[0]
else:
break
return res
res = test1(nums)
print(res)
二、数字列表排序
给你一个包含一些正整数和零的数字列表,例如[3,2,1,0,5,6,4,0,1,5,3,0,4,2,8,0],它可以被分解为一些零终止的子列表,
如[3,2,1,0] ,[5,6,4,0] …。
亲爱的霍格沃茨魔法师,你的的任务是:
首先,按照升序对每个子列表进行排序(不要对零排序,它总是在最后) ;
其次,按照所有子列表的和值进行排序(也是升序)
结果及注意事项:
返回结果是列表
如果某些子序列具有相同的和值,则按照它们的原始顺序对它们进行排序
def test5(nums):
res=[]
i=0
while i<len(nums):
if nums[i]==0:
res.append(nums[0:i+1])
nums=nums[i+1:]
else:
i+=1
print(res)
nums=[3,2,1,0,5,6,4,0,1,5,3,0,4,2,8,0]
test5(nums)
三、给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
# todo itertools.combinations:将一个列表和数字 ‘x’ 作为参数,并返回一个元组列表,每个元组的长度为 ‘x’,其中包含x个元素的所有可能组合。列表中元素不能与自己结合,不包含列表中重复元素
import itertools
class Solution:
def combine(self, n: int, k: int):
return list(itertools.combinations(range(1, n + 1), k))
n = 4
k = 2
s = Solution()
res = s.combine(n, k)
print(res) #[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]