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));
}