题目:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
思路:
- 回溯法
- Collections.swap 这一个工具方法,别写错了。
代码:
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> resultList = new ArrayList<>();
if (nums==null) {
return resultList;
}
List<Integer> numList = new ArrayList<>();
for (int num: nums) {
numList.add(num);
}
int length = nums.length;
backTrack( length, resultList, numList, 0);
return resultList;
}
public void backTrack( int length, List<List<Integer>> resultList, List<Integer> numList, int num) {
if (length == num) {
resultList.add ( new ArrayList<>(numList));
}
for (int i=num ; i < length; i++) {
Collections.swap ( numList, num, i);
backTrack( length, resultList, numList, num+1);
Collections.swap ( numList, num, i );
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-02-19 java使用Mysql批量更新(不存在就插入,存在就更新)
2021-02-19 Mybatis批量插入,批量更新