java数据结构与算法学习的day02

        今天呢,我们来主要思考元素替换的问题。根据通过什么来快速锁定我们需要进行替换的元素或者元素群,我们有大概这两个思路,第一个是通过索引或者索引范围,第二个是通过原数组的元素或者元素群。

        我们大概的思路定了下来,接下来就是在实际问题中,我们并不是要把全部的替换掉,只是替换第一个或者最后一个,那么这两个想法就是替换的延申;那么有人就会问了,如果我是想要替换第n(1<n<arr.length)个出现的呢,或者说是倒数第n(1<n<arr.length)个出现的呢;问得好,这个其实我们只要把替换第一个和最后一个的代码解决了,基本的都没啥差别的咧。

        根据第一个思路——通过原数组的元素或者元素群来进行具体思考,我们是因为有要替换的元素,才进行替换,所以如果没有,我们就应该不替换;这里有人就会问了,如果实在是不知道原数组有什么元素值该怎么办,那么我们就在方法里面加一个所谓的条件判断。只要能检索到原数组里面是否有这个元素或者元素群,才进行替换。

        根据第二个思路——通过索引或者索引范围来进行具体思考,索引、索引,原则很简单,不能超出原数组的数组长度即可进行替换。

        下面是这次替换的四个方法代码        

        (1)根据索引,替换元素内容

public static int[] replaceLocationE(int arr[],int index , int context ){
    if(index<len(arr)){
        arr[index]=context;
        return arr;
    }else {
        return null;
    }
}

        (2)  根据元素内容,替换元素内容

public static int[] Old_Replace_News(int arr[] , int old , int news){
    if(boolElement(arr,old)){
        for(int i = 0 ; i<len(arr) ; i++){
            if(arr[i]==old){
                arr[i]=news;
            }
        }
    }else {
        System.out.println("没有相关的元素内容进行匹配");
    }
    return arr;
}

        (3)  根据元素群索引范围,替换元素群内容

public static int[] replaceLocationEs(int arr[],int start,int end , int news[] ){
    int j=0;
    for(int i=start ; i<end;i++){
        arr[i]=news[j];
    }
    return null;
}

        (4)  根据元素群内容,替换元素内容

public static int[] Old_Replace_News(int arr[] , int olds[] ,int news[]){
    if(boolElements(arr,olds)){
        int arrl = len(arr);
        int oldsl = len(olds);
        int newsl = len(news);
        for(int j=0 ; j<arrl-oldsl ; j++){
            int i;
            int x=j;
            int count=1;
            for(i=0;i<oldsl;i++){
                if(olds[i]==arr[x++]){
                    count++;
                    if(count==oldsl){
                        for(int t=0;t<newsl;t++){
                            arr[j++]=news[t];
                        }
                    }
                }else {
                    break;
                }
            }
        }
    }else {
        System.out.println("没有相关的元素群内容进行匹配");
    }
    return arr;
}

        (5)  测试结果

public static void main(String[] args) {
    /**
     System.out.println("接下来我们创造了一个数组,进行实验");
     int arr[] = {0,1,2,3,4,5,6,7,8,9};
     System.out.println("让我们康康它有多少长度:");
     System.out.println(len(arr));
     System.out.println("====================================");
     System.out.println("接下来我们看看里面有什么吧!");
     printlist(arr);
     System.out.println("\n====================================");
     System.out.println("接下来是索引元素了");
     System.out.println("我要索引第一个:"+printElemnt(arr,0));
     System.out.println("我要索引第十一个:"+printElemnt(arr,11));
     System.out.println("====================================");
     System.out.println("接下来是索引元素群体");
     System.out.print("索引第一个到第四个:");
     printlist(printElements(arr,1,4));
     System.out.print("\n索引第五个到第四个:");
     printlist(printElements(arr,5,4));
     System.out.print("索引第一个到第十一个:");
     printlist(printElements(arr,0,11));
     System.out.println("====================================");
     System.out.println("查询数字1是否存在:"+boolElement(arr,1));
     System.out.println("查询数字13是否存在:"+boolElement(arr,14));
     System.out.println("====================================");
     int a[] = {1,2,3};
     int b[] = {3,6,9};
     System.out.println("查询数组{1,2,3}在不在arr里:"+boolElements(arr,a));
     System.out.println("查询数组{3,6,9}在不在arr里:"+boolElements(arr,b));
     */
    int arr[] = {0,1,2,3,4,5,6,7,8,9};
    System.out.println("===================接下来是替换元素的方法验证=================");
    System.out.println("原数组的内容:");
    printlist(arr);
    System.out.println("\n根据索引值进行替换的原理,我们把第1个元素内容替换成11之后,新数组的内容:");
    arr = replaceLocationE(arr,0,11);
    printlist(arr);
    System.out.println("\n原数组的内容:");
    arr = replaceLocationE(arr,1,11);
    printlist(arr);
    System.out.println("\n根据元素内容进行替换的原理,我们把元素内容为11的替换成元素内容为1,新数组的内容:");
    arr = Old_Replace_News(arr,11,1);
    printlist(arr);
    System.out.println("\n===================接下来是替换元素群的方法验证=================");
    int olds[] = {2,3,4};
    int news[] = {4,3,2};
    System.out.println("原数组的内容");
    printlist(arr);
    System.out.println("\n根据元素群内容进行替换的原理,我们把元素群内容为{2,3,4}替换成为{4,3,2},新数组的内容为:");
    arr = Old_Replace_News(arr,olds,news);
    printlist(arr);
    System.out.println("\n原数组的内容:");
    printlist(arr);
    System.out.println("\n根据索引值范围进行替换的原理,我们把范围从5到8的进行替换为{2,3,4},新数组的内容为:");
    int start = 5;
    int end = 8;
    arr = replaceLocationEs(arr,start,end,news);
    printlist(arr);
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值