算法通关村——不简单的数组增删改查

数组元素增加

这个增加是增加到比它大的第一个元素的前一个位置

    //size是数组已经存储的元素数量,从1开始编号
    //element是需要插入的元素
    public static int addByElementSequence(int[] arr, int size, int element) {
        if (size >= arr.length)
            return -1;

        int index = size;    //如果下面没找到index位置,就放在下标为size的位置
        for (int i = 0; i < size; i++) {
            if (element < arr[i]) {
                index = i;
                break;
            }
        }

        //元素后移
        for (int j = size; j > index; j--) {
            arr[j] = arr[j - 1];
        }

        //插入数据
        arr[index] = element;
        return index;

    }

数组元素删除

    //size为数组元素个数,key为删除的目标值
    public static int removeByElement(int[] arr, int size, int key) {
        int index = -1;
        for (int i = 0; i < size; i++) {
            if (arr[i] == key) {
                index = i;
                break;
            }
        }
        if (index != -1) {
            for (int i = index + 1; i < size; i++)
                arr[i - 1] = arr[i];
            size--;
        }
        return size;
    }

查找一个元素

    public static int findByElement(int[] arr, int size, int key) {
        for (int i = 0; i < size; i++) {
            if (arr[i] == key)
                return i;
        }
        return -1;
    }

单调数组

LeetCode 896
在这里插入图片描述

    public boolean isMonotonic(int[] nums){
        //单调增或者单调减
        boolean inc=true ,dec=true;
        int n=nums.length;
        for (int i = 0; i < n - 1; i++) {
            if(nums[i]>nums[i+1])
                inc=false;
            if(nums[i]<nums[i+1])
                dec=false;
        }
        return inc || dec;
    }

数组合并

LeetCode 88
在这里插入图片描述

    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int i = m + n - 1;
        int len1 = m - 1, len2 = n - 1;
        while (len1 >= 0 && len2 >= 0) {
            if (nums1[len1] <= nums2[len2]) {
                nums1[i--] = nums2[len2--];
            } else if (nums1[len1] > nums2[len2])
                nums1[i--] = nums1[len1--];
        }

        //假如A或B数组还有剩余
        while (len2 != -1)
            nums1[i--] = nums2[len2--];
        while (len1 != -1)
            nums1[i--] = nums1[len1--];
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值