【大白话说Java面试题 第82题】【Mysql篇】第12题:为什么 MySQL 索引底层不用二叉树?
2026/5/30 1:09:05
先排序 → 循环生成下一个排列 → 全部存起来 → 完成全排列
3 个关键点
必须先排序让数组变成最小顺序,
next_permutation才能生成所有排列。用 do-while 循环先存第一个排列,再不断生成下一个,不会漏掉。
核心函数 next_permutation自动生成下一个排列,生成完返回
false,循环结束。知识点
方法:字典序法(next_permutation)
从最小顺序开始,不断找 “下一个稍微大一点” 的排列,直到找不到为止。
vector<vector<int>> permute(vector<int>nums) { //定义二维数组来存结果 vector<vector<int>>res; //第一步先排序 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; }