java数组的增删改查

本文介绍了在Java中进行数组操作的方法,包括向递增数组插入元素、删除指定元素、判断数组单调性(递增或递减)、以及合并两个有序数组。每个操作都有详细的代码示例。
摘要由CSDN通过智能技术生成

1 向递增数组插入元素,不改变递增

public static void main(String[] args) {
        int[] a = {1,2,3,5,8,12,15,0};
        int len = 7;
        int index = 0;
        int element = 17;
        for(int i = 0; i < len; i++){
            if(a[i] < element){
                index = i + 1;
            }
        }
        // 从len+1开始到index结束,避免使用 a[i]=a[i-1];时index为0导致报错
        // 要有 = S等于号
        for(int i = len - 1; i >= index; i--){
            a[i + 1] = a[i];
        }
        // 避免数组越界,i > index 没有 = 等于号
        /*for(int i = len; i > index; i--){
            System.out.println(i);
            a[i] = a[i-1];
        }*/
        a[index] = element;
        System.out.println(Arrays.toString(a));
    }

2 删除数组中的元素

public static void main(String[] args) {
        int[] a = {1,2,3,5,8,12,15,0};
        int len = 7;
        int index = -1;
        int element = 15;
        for(int i=0;i<len;i++){
            if(a[i] == element){
                index = i;
            }
        }
        if(index == -1){
            return;
        }
        for(int i = index; i < len; i++){
            a[i] = a[i + 1];
        }
        System.out.println(Arrays.toString(a));
    }

3 判断数组是否单调(递增 或 递减)

3.1 把所有元素都遍历一遍

public static boolean isMonotonic(int[] nums) {
        int len = nums.length;
        int zeng = 0;
        int jian = 0;
        for(int i=0;i<len-1;i++){
            if(nums[i] > nums[i+1]){
                jian++;
            }else if(nums[i] < nums[i+1]){
                zeng++;
            }
        }
        if(zeng == 0 || jian == 0){
            return true;
        }
        return false;
    }

3.2 无需遍历所有元素

public static boolean isYouXu(int[] nums ,boolean increase){
        int len = nums.length;
        for(int i=0;i<len-1;i++){
            if(increase){
                if(nums[i]>nums[i+1]){
                    return false;
                }
            }else {
                if(nums[i]<nums[i+1]){
                    return false;
                }
            }
        }
        return true;
    }

    public static boolean isMonotonic2(int[] nums){
        return isYouXu(nums,true) || isYouXu(nums, false);
    }

4 合并两个有序(非递减)数组

public static void merge(int[] nums1, int m, int[] nums2, int n) {
        int len1 = m+n-1;
        int len2 = n-1;
        while(m>0 && n>0){
            if(nums1[m-1]>nums2[n-1]){
                nums1[len1--] = nums1[--m];
            }else {
                nums1[len1--] = nums2[--n];
            }
        }
        while(m>0){
            nums1[len1--] = nums1[--m];
        }
        while(n>0){
            nums1[len1--] = nums2[--n];
        }
        System.out.println(Arrays.toString(nums1));
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值