题解 | 没有重复项数字的全排列

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型一维数组 
     * @return int整型ArrayList<ArrayList<>>
     */
     ArrayList<ArrayList<Integer>> res = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> permute (int[] num) {
        // write code here
        // 要求字典序返回 先排序
        Arrays.sort(num);
        boolean[] visited = new boolean[num.length];
        backTrace(num, visited, new ArrayList<Integer>());
        return res;
    }

    private void backTrace(int[] num, boolean[] visited, ArrayList<Integer> list) {
        if (list.size() == num.length) {
            res.add(new ArrayList<>(list));
            return;
        }
        for (int i=0; i<num.length; i++) {
            if (visited[i]) continue;
            list.add(num[i]);
            visited[i] = true;
            backTrace(num, visited, list);
            visited[i] = false;
            list.remove(list.size()-1);
        }
    }
}

全部评论

相关推荐

01-20 10:55
已编辑
北京邮电大学 C++
1.&nbsp;什么是C++中的模板特化?2.&nbsp;什么是多态?如何在C++中实现?3.&nbsp;什么是虚函数?它的作用是什么?4.&nbsp;C++中的构造函数和析构函数有什么区别?5.&nbsp;什么是抽象类和接口?如何定义它们?6.&nbsp;C++中的类型转换有哪些方式?7.&nbsp;什么是命名空间的嵌套?如何使用?8.&nbsp;如何使用std::mutex进行线程同步?9.&nbsp;C++中的智能指针如何实现自定义删除器?10.&nbsp;什么是RAII的优点?11.&nbsp;C++中的const修饰符有什么作用?12.&nbsp;如何实现一个简单的单例模式?13.&nbsp;什么是C++中的内存对齐?14.&nbsp;如何使用std::atomic实现原子操作?15.&nbsp;C++11引入的std::initializer_list是什么?16.&nbsp;如何使用std::tuple?它的使用场景是什么?17.&nbsp;C++中的decltype有什么作用?18.&nbsp;什么是函数对象(Functors)?19.&nbsp;如何实现一个简单的事件机制?20.&nbsp;C++中的std::move和std::forward有什么区别?21.&nbsp;什么是Lambda捕获?如何使用?22.&nbsp;C++中的std::promise和std::future是什么?23.&nbsp;如何使用std::chrono进行时间测量?24.&nbsp;C++中的std::array如何与std::vector进行比较?25.&nbsp;什么是std::string_view?它的优点是什么?26.&nbsp;C++中的using和typedef有什么区别?27.&nbsp;如何实现一个简单的观察者模式?28.&nbsp;C++中的std::any是什么?如何使用?29.&nbsp;什么是C++中的异常安全保证?30.&nbsp;如何使用std::filesystem处理文件系统操作?31.&nbsp;C++中的constexpr函数有什么限制?32.&nbsp;什么是std::optional的使用场景?33.&nbsp;如何在C++中实现一个简单的线程池?34.&nbsp;C++中的std::string如何支持拼接和查找?35.&nbsp;什么是C++中的static_assert?有什么用?36.&nbsp;如何使用std::copy和std::move进行拷贝和移动?37.&nbsp;C++中的std::vector如何动态调整大小?38.&nbsp;如何在C++中实现一个简单的计时器?39.&nbsp;C++中的std::list和std::vector的内存使用有什么不同?40.&nbsp;什么是C++中的命名空间别名?如何使用?41.&nbsp;如何使用std::variant进行类型安全的联合体?42.&nbsp;C++中的std::shared_mutex如何实现读写锁?43.&nbsp;如何在C++中实现一个简单的状态机?44.&nbsp;C++中的std::function如何与回调函数结合使用?45.&nbsp;什么是C++中的虚表(vtable)?46.&nbsp;如何使用std::for_each和Lambda表达式遍历容器?47.&nbsp;C++中的std::unordered_map是如何实现的?48.&nbsp;如何使用std::map和std::set进行排序?49.&nbsp;C++中的std::unique_lock和std::lock_guard有什么区别?50.&nbsp;如何在C++中实现一个简单的命令模式?问题答案已经整理到专栏中了,关注我分享更多知识。&nbsp;&nbsp; http://daxprogram.com
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务