LeetCode-046-全排列

全排列

題目描述:給定一個不含重複數字的陣列 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。

示例說明請見LeetCode官網。

連結:https://leetcode-cn。com/problems/permutations/

著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解法一:暴力破解法

用一個佇列temp記錄暫存的結果,每次遍歷從佇列中取出一個結果,然後往list中新增一個nums中的元素,其中要判斷要新增的元素是否已經存在,如果存在,則重複了,不新增;如果不存在,則新增到佇列中作為其中一個可能的結果。直到所有的list中的元素個數都是nums。length,返回所有的結果。

import

java。util。*;

public

class

LeetCode_046

{

public

static

List> permute(

int

[] nums) {

List> result =

new

ArrayList<>();

int

count =

0

List list =

new

ArrayList<>();

Queue> temp =

new

LinkedList<>();

temp。add(list);

while

(count < nums。length) {

int

times = temp。size();

while

(times >

0

) {

List cur = temp。poll();

for

int

num : nums) {

List next =

new

ArrayList(Arrays。asList(

new

Integer[cur。size()]));

Collections。copy(next, cur);

if

(!next。contains(num)) {

next。add(num);

temp。add(next);

}

}

times——;

}

count++;

}

result。addAll(temp);

return

result;

}

public

static

void

main

(String[] args)

{

int

[] nums =

new

int

[]{

1

2

};

for

(List integers : permute(nums)) {

for

(Integer integer : integers) {

System。out。print(integer +

“ ”

);

}

System。out。println();

}

}

}

【每日寄語】

每天醒來將微笑別在衣襟就會遇見更多的美好。

LeetCode-046-全排列