力扣 hot100 Day56

46. 全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

cpp 复制代码
//抄的
class Solution {
private:
    vector<vector<int>>result;
    vector<int> path;
public:
    void backtracking(vector<int>& nums,vector<bool>&used)
    {
        if(path.size()==nums.size())
        {
            result.push_back(path);
            return;
        }
        for(int i=0;i<nums.size();i++)
        {
            if (used[i] == true) continue;
            used[i] = true;
            path.push_back(nums[i]);
            backtracking(nums, used);
            path.pop_back();
            used[i] = false;
        }
    }

    vector<vector<int>> permute(vector<int>& nums) {
        vector<bool>used(nums.size(), false);
        backtracking(nums,used);
        return result;
    }
};

回溯算法

主要还是依托于递归,再递归中循环判断,实现多层的穷举

这里传递一个bool数组used用于判断在此次枚举中数字是否用过,终止条件是当前记录的路径长度是否等于原数组长度,回溯处理需要弹出path末尾元素并重置used对应元素。

相关推荐
颜酱10 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_7369191010 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi98783810 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
DuHz10 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
Polaris北极星少女10 小时前
TRSV优化2
算法
代码游侠11 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
2301_7634724611 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
abluckyboy12 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
园小异12 小时前
2026年技术面试完全指南:从算法到系统设计的实战突破
算法·面试·职场和发展
m0_7066532312 小时前
分布式系统安全通信
开发语言·c++·算法