笔试算法题

长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,完成以下函数

假设0 3 1 2;第一次 3 0 1 2  ;3 1 0 2也就是0和1位置上交换 0 和1 交换

      第二次 3 1 0 2 ;3 1 2 0;也就是0在位置2上,0与2交换;

     第三次 3 1  2 0;0 1 2 3;也就是 0与3交换;

      也就是先和ayy[i] 交换,之后0和i交换,将i位于ayy[i]上,位置归位

循环交换--对数字i来说,先将0与i位置的数字交换,即swap_with_zero(array, len, array[i]);

此时0在i位置,然后交换0与i即可。

链接:https://www.nowcoder.com/questionTerminal/2e5ea7147ea84f089496d23a57ee19fc?source=relative
来源:牛客网
 

广度优先搜索: 分层(找相邻的),标记为1的概念

v0进 v0出;然后 v2 v1 v3进;队列的结构,

v2出去,v0已经访问,v4 进来;v1出去,v0 v4已经访问 v5进来;v3出去,都访问,没进来;v4出去 v6进来;

v5出去,v6出去,为空,至此结束。

深度优先搜索  ;树的先序遍历

v0 到 v2 ; v2访问v0,访问v4; 

v4访问v1 ;v1 访问v0 v4  v5; v5 访问v1 v3 ;

v3 回溯到v5 ;   v5访问v6;  v6访问v4,v5;

v6回溯v5  ; V1 v4  v2   v0;

https://blog.youkuaiyun.com/weixin_40953222/article/details/80544928

https://blog.youkuaiyun.com/seagal890/article/details/93343658#commentBox

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值