数组元素增加
这个增加是增加到比它大的第一个元素的前一个位置
//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--];
}