# encoding = utf-8
# 开发者:xxx
# 开发时间: 20:26
# "Stay hungry,stay foolish."class Solution(object):def nextPermutation(self, nums):import itertoolsl = len(nums)a = tuple(nums)nums.sort()permutations_lst = list(itertools.permutations(nums, l))index_u = permutations_lst.index(a)le = len(permutations_lst)if le == index_u+1:index_u = 0res1 = permutations_lst[index_u]return list(res1)res2 = permutations_lst[index_u+1]return list(res2)if __name__ == '__main__':nums = [1,2,3]sol = Solution()print(sol.nextPermutation(nums))
所用到的方法:
实现列表元素的排列组合
作者:永不止步 链接:https://www.zhihu.com/question/589445886/answer/3039740067 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Python 中可以使用 itertools 模块来实现列表元素的排列组合。具体来说,可以使用 itertools.permutations 和 itertools.combinations 来实现排列和组合。 itertools.permutations(iterable, r=None) 返回 iterable 中所有长度为 r 的排列,如果 r 没有指定,则默认使用可迭代对象的长度。
例如,假设有一个列表 lst = [1, 2, 3] ,则可以使用 itertools.permutations 获取长度为 2 的所有排列: -
import itertools -
lst = [1, 2, 3] -
permutations_lst = list(itertools.permutations(lst, 2)) -
print(permutations_lst)
输出结果为: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)] itertools.combinations(iterable, r) 返回 iterable 中所有长度为 r 的组合。
例如,假设有一个列表 lst = [1, 2, 3] ,则可以使用 itertools.combinations 获取长度为 2 的所有组合: -
import itertools -
lst = [1, 2, 3] -
combinations_lst = list(itertools.combinations(lst, 2)) -
print(combinations_lst)
输出结果为: [(1, 2), (1, 3), (2, 3)] |
找列表中的元素位置
#列表
listA = ["o", "u" , "i"]
#获取u的索引并打印
index_u = listA.index("u")
print(index_u)
LeetCode 运行结果
我的运行结果
请各位大佬指正