LeetcodeアルゴリズムJava全解--46.全配列
LeetcodeアルゴリズムJava全解答–46.全配列
文書ディレクトリ LeetcodeアルゴリズムJava全解答--46.全配列 題 アイデア 結果 まとめ コード 私の答え 大人たちの答え 試験例 その他 タイトル
重複する数値のないシーケンスを指定し、可能なすべての配列を返します.
例
の意見を打診
元の配列、最終結果の配列、ある配列を再帰する
最後にループすると、最終結果配列に1回の配列を追加します.
最後までループしていない場合は、元の戻り方を呼び出し続けます.
結果
26%を超えるテストケース
時間複雑度/空間複雑度:/n
まとめ
//TODO実行プロセス
コード#コード#
私の答え
みんなの答え
テストケース
その他
コード管理コードクラウドアドレス:https://gitee.com/lizhaoandroid/LeetCodeAll.git
他の内容を見るには、コラムや私のブログをクリックしてください.https://blog.csdn.net/cmqwan
「大物たちの答え」のラベルはleetcodeから来ています.権利侵害は私に連絡して削除してください.
質問があれば連絡してください、連絡先:QQ 3060507060
文書ディレクトリ
重複する数値のないシーケンスを指定し、可能なすべての配列を返します.
例
: [1,2,3]
:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
の意見を打診
元の配列、最終結果の配列、ある配列を再帰する
最後にループすると、最終結果配列に1回の配列を追加します.
最後までループしていない場合は、元の戻り方を呼び出し続けます.
結果
26%を超えるテストケース
時間複雑度/空間複雑度:/n
まとめ
//TODO実行プロセス
result: []smallResult: []
result: []smallResult: [1]
result: []smallResult: [1, 2]
result: []smallResult: [1, 2, 3]
result: [[1, 2, 3]]smallResult: [1, 3]
result: [[1, 2, 3]]smallResult: [1, 3, 2]
result: [[1, 2, 3], [1, 3, 2]]smallResult: [2]
result: [[1, 2, 3], [1, 3, 2]]smallResult: [2, 1]
result: [[1, 2, 3], [1, 3, 2]]smallResult: [2, 1, 3]
result: [[1, 2, 3], [1, 3, 2], [2, 1, 3]]smallResult: [2, 3]
result: [[1, 2, 3], [1, 3, 2], [2, 1, 3]]smallResult: [2, 3, 1]
result: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1]]smallResult: [3]
result: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1]]smallResult: [3, 1]
result: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1]]smallResult: [3, 1, 2]
result: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2]]smallResult: [3, 2]
result: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2]]smallResult: [3, 2, 1]
コード#コード#
私の答え
/**************************************
*
, 。
:
: [1,2,3]
:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
**************************************/
/*************************************
:
, ,
,
,
26%
/ : /n
:
:
************************************/
public List> permute(int[] nums) {
if (nums.length == 0) {
return Collections.EMPTY_LIST;
}
List> result = new ArrayList<>();
List smallResult = new ArrayList<>();
repick(nums, result, smallResult);
return result;
}
private void repick(int[] nums, List> result, List smallResult) {
if (smallResult.size() == nums.length) {
result.add(new ArrayList(smallResult));
} else {
for (int i = 0; i < nums.length; i++) {
if (smallResult.contains(nums[i])) {
continue;
}
smallResult.add(nums[i]);
repick(nums, result, smallResult);
smallResult.remove(smallResult.size() - 1);
}
}
}
みんなの答え
public List> better(int[] nums) {
List> result = new ArrayList>();
if(nums == null || nums.length == 0) {
return result;
}
List list = new ArrayList();
permute(nums, result, 0, list);
return result;
}
public void permute(int[] nums, List> result, int index, List list){
if(index == nums.length){
List array = new ArrayList(list);
result.add(array);
return;
}
for(int i=index;i
テストケース
@Test
public void test046() {
//
int[] arr1 = new int[] { 1, 2, 3 };
//
List> expResult1 = new ArrayList<>();
List list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List list2 = new ArrayList<>();
list2.add(1);
list2.add(3);
list2.add(2);
List list3 = new ArrayList<>();
list3.add(2);
list3.add(1);
list3.add(3);
List list4 = new ArrayList<>();
list4.add(2);
list4.add(3);
list4.add(1);
List list5 = new ArrayList<>();
list5.add(3);
list5.add(1);
list5.add(2);
List list6 = new ArrayList<>();
list6.add(3);
list6.add(2);
list6.add(1);
expResult1.add(list1);
expResult1.add(list2);
expResult1.add(list3);
expResult1.add(list4);
expResult1.add(list5);
expResult1.add(list6);
//
Solution046 solution046 = new Solution046();
List> result1 = solution046.permute(arr1);
//
Assert.assertEquals(expResult1, result1);
}
その他
コード管理コードクラウドアドレス:https://gitee.com/lizhaoandroid/LeetCodeAll.git
他の内容を見るには、コラムや私のブログをクリックしてください.https://blog.csdn.net/cmqwan
「大物たちの答え」のラベルはleetcodeから来ています.権利侵害は私に連絡して削除してください.
質問があれば連絡してください、連絡先:QQ 3060507060