目录
题目
思路
Code
题目
题目内容:
给定一个包含 n 个整数的数组 nums 和一个整数 k,需要将 nums 中的所有元素重新排列,生成一个新的序列。
数组下标从 0 开始,新序列中下标为 k-1 的元素和下标为 k 的元素不能相同。
请统计满足条件的不同排列数量,相同的数组排列只统计一次;如果无法构造出满足条件的数组,输出 0。
1 ≤ n ≤ 15,1 ≤ nums[i] ≤ 100,1 ≤ k ≤ n-1。
输入描述:
第一行输入以英文逗号分隔的数组 nums。
第二行输入限制索引 k。
输出描述:
输出满足条件的不同数组排列数量。
样例 1
输入:
2,2,3 1输出:
2说明:
只有 [3,2,2] 和 [2,3,2] 两种不同排列满足下标 0 与下标 1 的元素不同。
思路
整体思路:先计算多重集合的全部不同排列数量,再减去两个限制位置放置相同数值的无效排列数量。
第一步:统计每个数值的出现次数。全部不同排列数等于 n