共享数组原地逆置

作者: sunxiaohang | 来源:发表于2017-12-28 13:04 被阅读15次

偶然在一本书上看到这样一道题觉得听一意思的就拿来做了一下,题目是这样设置的
在已知一维数组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<end) {
            temp = array[start];
            array[start++] = array[end];
            array[end--] = temp;
        }
    }

tip:char array[]={'A','B','C','D','E','F','G','H','1','2','3','4'}
测试数组A[0-7],B[8-11]

测试结果如下:

image.png

完整代码

public class Main {
    public static char array[]={'A','B','C','D','E','F','G','H','1','2','3','4'};
    public static void main(String[] args) {
        reverse(0,7);//逆置字母序列结果为:HGFEDCBA1234
        reverse(8,11);//逆置数字序列结果为:HGFEDCBA4321
        reverse(0,11);//整体逆置结果为:1234ABCDEFG
        print(array);
    }
    public static void reverse(int start,int end){//逆置函数
        char temp;
        while(start<end) {
            temp = array[start];
            array[start++] = array[end];
            array[end--] = temp;
        }
    }
    private static void print(char[] array) {
        for (int i = 0; i <array.length; i++)
            System.out.print(array[i]);
        System.out.println();
    }
}
更多关于java的文章请戳这里:(您的留言意见是对我最大的支持)

我的文章列表
Email:sxh13208803520@gmail.com

相关文章

  • 共享数组原地逆置

    偶然在一本书上看到这样一道题觉得听一意思的就拿来做了一下,题目是这样设置的在已知一维数组A[m+n]中一次存放两个...

  • Leetcode题解之数组

    完美的数组逆置算法 整型数组的逆置算法 最简单的首尾互换: 合理利用泛型 封装类型与基本类型的各自适用范围 旋转数...

  • 22.数组逆置

    #include using namespace std; int main() { int arr[] = { ...

  • 2018-05-25

    python 1.python中数组和矩阵乘法及使用总结 对数组的运算 矩阵求逆,转置,求迹

  • 单链表翻转

    单链表的就地逆置:就地逆置即空间复杂度为O(1)一:用数组存储单链表的值,然后重新逆序赋值,效率较低。二:利用三个...

  • 2020-07-02

    算法和数据结构梳理 线性表 顺序表数组(移动、原地操作、前缀和)多数组(合并 交集二维数组(旋转、数独、染色、置零...

  • 通过数组逆置进行循环移位

    通过数组逆置进行循环移位 2018-09-09 Question设计算法将数组a[n]循环左移k位,并要求时间复杂...

  • 机试常用算法和题型-容器函数使用专题

    string.h库函数memset()置零 reverse()逆置函数algorithm头文件 strrev逆置字...

  • 认识Numpy—矩阵

    本节主要介绍如何创建矩阵、矩阵的四则运算、矩阵的转置、矩阵的逆、数组的比较及运算。

  • 单链表逆置

    单链表逆置的思路 a:将单链表储存为数组,然后按照数组的索引逆序进行反转。b:使用3个指针遍历单链表,逐个链接点进...

网友评论

    本文标题:共享数组原地逆置

    本文链接:https://www.haomeiwen.com/subject/nxomgxtx.html