[算法题解详细]DFS解力扣46全排列,2024前端笔试题

};

然后进入dfs函数,出口条件就是递归深度等于了数组长度的时候,同时也是选中了所有的数字的时候,把当前的排列加入答案中,然后回溯到上一层

void dfs(int u, vector& nums, vector& record) {

if(u == n) {

ans.push_back(temp);

return;

}

}

然后要注意在每一层中,我们都遍历数组nums,在循环中判断如果当前nums[i]在record数组中还没有使用过,也就是!record[i]为真时,则把当前nums[i]加入排列中

然后就是一个回溯的写法,进入下一层之间把record[i]置成true表示在下一层递归中当前数字已经使用了,在下一层递归结束后把record[i]又置成false,回溯到进入下一层递归前的状态

void dfs(int u, vector& nums, vector& record) {

if(u == n) {

ans.push_back(temp);

return;

}

for(int i = 0; i < n; i++) {

if(!record[i]) {

record[i] = true;

temp.push_back(nums[i]);

dfs(u + 1, nums, record);

temp.pop_back();

record[i] = false;

}

}

}

然后把代码整合起来

完整代码:

class Solution {

public:

vector<vector> ans;

vector temp;

int n;

void dfs(int u, vector& nums, vector& record) {

if(u == n) {

ans.push_back(temp);

return;

}

for(int i = 0; i < n; i++) {

if(!record[i]) {

record[i] = true;

temp.push_back(nums[i]);

dfs(u + 1, nums, record);

temp.pop_back();

record[i] = false;

}

}

}

vector<vector> permute(vector& nums) {

n = nums.size();

vector record(n, false);

dfs(0, nums, record);

return ans;
}
};

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

img
img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注前端获取(资料价值较高,非无偿)
img

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。
掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值