leecode第四十六题(全排列)-LMLPHP

class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
int len=nums.size();
vector<vector<int>> res; if(len==)//特殊情况
{
vector<int> res1;
res.push_back(res1);
return res;
} if(len==)//迭代返回条件
{
res.push_back(nums);
return res;
} for(int i=;i<len;i++)
{
vector<int> nums1=nums;//用来复制原数组
int temp=nums1[];
nums1[]=nums1[i];
nums1[i]=temp;//交换首字符与第i个位置的值
vector<int> nums2;
for(int j=;j<len;j++)
nums2.push_back(nums1[j]);//nums2用来存储除首字符后的值 vector<vector<int>> ans=permute(nums2);//得到nums2的所有可能排列
int length=ans.size();
for(int j=;j<length;j++)
{
vector<int> nums3;
nums3.push_back(nums1[]);//先把首字符打进去
for(int k=;k<len-;k++)
nums3.push_back(ans[j][k]);//再把后续的打进去
res.push_back(nums3);//把这length个都充入res返回
}
} return res; }
};

分析:

痛快,在分析好要做什么之后,咔咔咔就写出来了,除了一处笔误,其他畅通无阻啊,一次提交就过了。

但是暴露的问题有,这个题情况偏简单,几乎没有边界条件,所以我分析案例不难。其次就是在迭代和循环上犹豫了好久,因为迭代中输入返回被指定了,写起来如上那么复杂,循环想了半天感觉更难写了,所以直接就用迭代硬怼了。还有就是特殊情况那里,没想到在leecode里,没有初始化的二维数组是啥都没有,本来想初始化并返回0并加个全局符号变量说明,但是题目要求返回全空,我就跟着这么写了。

05-11 11:15