Algorithm 如何使用给定的数组逐个生成最小id?
给定像['8','2','5','3']这样的数组和整数n。 编写函数生成id,id不能包含n个连续数字。所有数字必须来自给定数组 例如,如果n等于2,则当前id为8253,下一个id为8258,因为8255有两个连续的5Algorithm 如何使用给定的数组逐个生成最小id?,algorithm,Algorithm,给定像['8','2','5','3']这样的数组和整数n。 编写函数生成id,id不能包含n个连续数字。所有数字必须来自给定数组 例如,如果n等于2,则当前id为8253,下一个id为8258,因为8255有两个连续的5 如何解决它?我建议使用N基整数系统。所以对于上面的例子,我们可以使用5基系统 首先对数字数组进行排序,即['2','3','5','8',],每个数字将匹配从1开始的新基数。例如,'2'->1,'3'->2,'5'->3,'8'->4 我从1分配的不是0,因为如果从0开始,“
如何解决它?我建议使用N基整数系统。所以对于上面的例子,我们可以使用5基系统
希望这能有所帮助,尽管有点复杂。我建议使用N基整数系统。所以对于上面的例子,我们可以使用5基系统
希望这能有所帮助,尽管有点复杂。如果
n=2
的当前id是8253
,那么为什么下一个id
是8258
而不是8254
?因为id的数字来自给定数组。给定的数组是[8,2,5,3],不包含4使用next\u置换并检查它是否包含n个连续数字@拉杰,非常感谢。这对我很有帮助。但在我的例子中,数组中的元素是允许重复的,id的长度是无限的。因此,可能是832582532,“下一个置换”无法解决此问题。您可以实现rank
(获取给定置换的索引)和unrank
(从给定索引创建置换)方法;如果n=2
的当前id
是8253
,那么为什么下一个id
是8258
而不是8254
?因为id的数字来自给定数组。给定的数组是[8,2,5,3],不包含4使用next\u置换并检查它是否包含n个连续数字@拉杰,非常感谢。这对我很有帮助。但在我的例子中,数组中的元素是允许重复的,id的长度是无限的。因此,可能是832582532,“下一个置换”无法解决此问题。您可以实现rank
(获取给定置换的索引)和unrank
(从给定索引创建置换)方法;