共享数组原地逆置

这篇博客介绍了一道面试题目,要求在已知的一维数组A[m+n]中,原地逆置两个线性表的位置。通过三步操作:字母序列逆置、数字序列逆置和整体逆置,实现了空间复杂度为O(1)的解决方案。作者提供了逆置函数的代码,并展示了测试用例。
摘要由CSDN通过智能技术生成

偶然在一本书上看到这样一道题觉得听一意思的就拿来做了一下,题目是这样设置的
在已知一维数组A[m+n]中一次存放两个线性表(a1,a2,a3,a4…am),(b1,b2,b3…bn),试写出一个函数将两个顺序表位置互换,即由(a,1,a2,a3,a4...am,b1,b2,b3...bn)转换成(b1,b2,b3...bn,a,1,a2,a3,a4...am)要求空间复杂度为O(1)想必这种题会经常出现在面试题目中吧,哈哈,扯远了,以下是我的答案,水平有限,如有纰漏还望各位大神不吝赐教。

乍一看题目还挺麻烦的,两个数组大小不一样,原地逆置循环次数不容易控制,换个思路重新整理一下发现可以用一种很巧妙的方法分三步实现
第一步:将字母序列逆置
第二部:将数字序列逆置
第三部:将数组整体逆置
其中逆置函数如下:
逆置函数需要两个参数,分别为需要逆置的数组起始位置[start]和终止位置[end];

    public static void reverse(int start,int end){//逆置函数
        char temp;
        while(start<
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值