数组奇偶索引交换有没有保持有序的解法
题目,对于一个数组[1,2,3,4,5,6,7],进行奇偶索引交换,希望偶数索引都在左侧,奇数索引在右侧,得到[1,3,5,7,2,4,6]。
快慢指针解法:按照快慢指针的思想,很容易有原地交换的写法:
public static int[] oddEven2(int[] nums) {
int n = nums.length;
int l = 0;
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
swap(nums, l++, i);
}
}
return nums;
}
疑问:这种交换打乱了奇数索引的顺序,有没有可以保持有序,又是原地的算法呢?
快慢指针解法:按照快慢指针的思想,很容易有原地交换的写法:
public static int[] oddEven2(int[] nums) {
int n = nums.length;
int l = 0;
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
swap(nums, l++, i);
}
}
return nums;
}
疑问:这种交换打乱了奇数索引的顺序,有没有可以保持有序,又是原地的算法呢?
全部评论
请教大神指导
相关推荐
2025-12-09 14:12
新乡学院 嵌入式软件开发
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的 点赞 评论 收藏
分享
查看21道真题和解析