首页 > 试题广场 >

奇数下标都是奇数或者偶数下标都是偶数

[编程题]奇数下标都是奇数或者偶数下标都是偶数
  • 热度指数:1956 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度不小于2的数组arr,实现一个函数调整arr,要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数
注意:1、数组下标从0开始!
2、本题有special judge,你可以输出任意一组合法解!同时可以证明解一定存在
[要求]
时间复杂度为,额外空间复杂度为


输入描述:
第一行一个整数N。表示数组长度
接下来一行N个整数表示数组内的数


输出描述:
输出N个整数。表示调整后的数组
示例1

输入

5
1 2 3 4 5 

输出

2 1 4 3 5

说明

样例中的输出保证了奇数下标都是奇数

备注:

头像 嘟嘟兔
发表于 2020-07-16 11:37:59
解法1:开两个数组,把偶数奇数各自放进去,再轮流输出就行了。 解法2:从左往右,不停地找错位的奇数偶数交换,直到有一方到达边界。 解法3:我自己写的,最复杂的orz,首先扫一遍奇偶个数,据此分奇多还是偶多两种情况。从左往右,不停地找需要修正的位置,用一个head向右扫可以用来修正的数,head扫的位 展开全文
头像 寄居的过客
发表于 2022-09-04 12:01:07
思路就是利用 偶数指针 和 奇数指针每次把最后位置的数 按照偶数或者奇数 每次交换到合适的位置当两个指正有一个跑出去 都保证了 有效的结果不过我有一个疑问 就是我通过异或来修改两个数时 ac 6/10 表示很不理解 import java.io.*; public class Main { 展开全文