兄弟们京东第七批笔试第三题怎么做啊

数组索引都为奇数或者偶数才能交换,问将一个数组变成有序的最小交换次数
全部评论
直接检查第i个数等不等于i,不等于就找i的下标idx,如果idx和i奇偶性不同直接转-1,否则就把第i个数移到第idx位置上,第i个数赋予i,转换次数+1,一个循环搞定,但是直接找下标会超时,用哈希表记一下下标。
点赞 回复 分享
发布于 2023-09-23 21:40 江苏
我写的很麻烦,大致思路是先排序个新数组,再把原数组拆成奇偶数组,然后逐个比较原数组和新数组(排序)每个数。如果数字一样就跳过,不一样就在原数组上做swap(交卷新数组对应的数),同时交换次数+1,这样遍历一遍后就是最优交换数了。麻烦的点在于数组可能有重复数字,所以我是建了堆map映射每个数字到其所有位置(list),然后swap后就根据map从list里删除更新。ps这题相当于今天网易第一题的复杂版(也有些区别)。
点赞 回复 分享
发布于 2023-09-23 21:29 美国
请问第二题怎么做呢
点赞 回复 分享
发布于 2023-09-23 21:23 湖南
分别将索引为奇数和偶数位置上的数取出来组成两个数组,分别排序并计算需要交换的最小次数,然后再把它们放回原来的位置上,看得到的数组是否有序
点赞 回复 分享
发布于 2023-09-23 21:13 北京

相关推荐

09-09 11:25
山东大学 Java
1、自我介绍2、挑一个项目来介绍一下3、Java 的 GC 过程会有 Stop the World,谈谈为什么要有 STW 的机制?4、谈谈 Java 的SGC、G1、ZGC 垃圾回收器5、G1 已经很不错了,为什么还要有 ZGC 这样的垃圾回收器,为了解决什么问题?6、比如一个订机票的场景,涉及多个外部系统,首先要去看有没有票,然后第二个是支付要调支付宝或者微信去做付款,定完票可能过了半个小时才告诉我订票有没有成功。对于这种场景下的分布式事务,你认为怎么去处理和设计来保证一致性比较好?7、基于消息传递的方案,消息可能传递失败,如何解决?8、如果用消息队列,这种场景,怎么做技术选型?9、做题:新兵报到,指导员命令所有人按身高大小,从低到高,依次站好,每次从头这边开始调整,但是要求,每次一次只能进行一次交换。输入 N(N <=  20),输出 N 个士兵最终的排列结果。示例:N = 5,heights = [170, 167, 180, 175, 168],输出:[167, 168, 170, 175, 180]10、谈谈基于数据库的方式如何实现分布式锁?11、谈谈基于 Redis 如何实现分布式锁?12、为什么基于 Redis 实现分布式锁时,Set 命令要加 PX 参数?13、基于数据库方式实现和基于 Redis 实现的区别?应用场景?14、反问
查看13道真题和解析
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务