Java将一个Int数组的所有排列放入另一个数组而不重复
关于堆栈溢出还有很多其他类似的问题,但这一个问题的要求与其他问题不同。我想知道如何在不重复的情况下,将一个int数组的所有排列放入另一个2D数组中。例如,输入:
{1,2,3}
输出:
{1,2,3}
{1,3,2}
{2,1,3}
{2,3,1}
{3,1,2}
{3,2,1}
我怎样才能做到这一点?我只想口头介绍一下如何做到这一点,或者更好的一些代码。我的问题不同于this one 因为链接的一个使用C++函数来实现这一点。我使用Java
谢谢
# 1 楼答案
java是一种面向对象语言,因此我认为考虑问题可能包含的对象是有用的。p>
有一件事会立即跳出你的问题领域,那就是三重整数集,那么为什么不把它定义为一个对象呢
注意
Triad
定义了equals()
方法和hashCode()
方法。这很重要,有几个原因Triad
是一个值类,即Triad
的实例代表值,而不是活动的东西。值类通常:上面的最后一个属性允许在Java Collections框架中使用实例而不用担心。现在让我们使用集合框架:
如果必须在int数组中生成结果,那么现在只需迭代HashSet实例并将每个元素的组件值分配给结果数组