开发者社区> 问答> 正文

遇到一个奇偶数列问题,求解答。

Tom 有一个长度为 n(1<=n<=100) 的数列,数列中只包含 1-n 且不重复的数字。这个数列是一个不完整的数列,意思是说数列中有几个位置是空的,Tom 想让你帮他把空的位置填上数字,当然是有要求的,对于一个数列来说,如果相邻两位的数字奇偶性不同,这个数列的权值就 +1,请你算出来将空位补上以后,权值最小为多少 ? 对于这个数列,空位用 0 表示。输入数列长度 n(1<=n<=100) 和n个数 ai(0<=ai<=n)输出填上空位以后的数列的最小权值。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 16:51:18 633 0
1 条回答
写回答
取消 提交回答
  • 1.遍历一次,从原数组中提取出这 5 种空位,同时计算没有填入的奇数偶数分别为多少个 2.按照 (3,4)(1,2)(5) 分成三组,对前两组按照空位从少到多排序 3.按照贪心策略的顺序先判断 (3,4) 中有多少可以增加 0 的,并消耗掉对应的奇数偶数个数,增加为2 的直接跳过,不消耗个数。然后判断 (1,2) 中有多少可以增加 0 的,并消耗掉对应的奇数偶数个数,增加为 1 的直接跳过,不消耗个数。最后计算 (3,4) 剩下的个数 *2+(1,2) 中剩下的个数 *1+(5) 中剩下的个数 *1 因此输入:5 [0,5,0,2,3] 输出:2 注 :对于样例解释说明,符合题意的数列可以为 1 5 4 2 3

    2021-12-23 18:43:07
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载