全排列先排序 → 循环生成下一个排列 → 全部存起来 → 完成全排列3 个关键点必须先排序让数组变成最小顺序next_permutation才能生成所有排列。用 do-while 循环先存第一个排列再不断生成下一个不会漏掉。核心函数 next_permutation自动生成下一个排列生成完返回false循环结束。知识点方法字典序法next_permutation从最小顺序开始不断找 “下一个稍微大一点” 的排列直到找不到为止。vectorvectorint permute(vectorintnums) { //定义二维数组来存结果 vectorvectorintres; //第一步先排序 sort(nums.begin(), nums.end()); //第二部 //搞个do while循环生成所有排列 //排列函数 next_permutation do { res.push_back(nums); //先把排序好的数组放进结果里 } while (next_permutation(nums.begin(), nums.end())); //成功生成下一个排列 true 循环继续 //已经是最后一个排列返回false 循环结束 return res; }