单调数组
第一种方法,两次遍历确定,第一次确定是否递增 ,第二次确定是否递减
/**
* 第一种方法,两次遍历确定,第一次确定是否递增 ,第二次确定是否递减
*
* @param nums
* @return
*/
public static boolean isMonotonic(int[] nums) {
return isSorted(nums, true) || isSorted(nums, false);
}
public static boolean isSorted(int[] nums, boolean increasing) {
int n = nums.length;
for (int i = 0; i < n - 1; i++) {
if (increasing) {
if (nums[i] > nums[i + 1]) {
return false;
}
} else {
if (nums[i] < nums[i + 1]) {
return false;
}
}
}
return true;
}
数组合并
两个数组从后向前逐步合并
还有一种方法,先合并再排序
/**
* 方法2:两个数组从后向前逐步合并
*
* @param nums1
* @param nums1_len
* @param nums2
* @param nums2_len
*/
public static void merge2(int[] nums1, int nums1_len, int[] nums2, int nums2_len) {
int i = nums1_len + nums2_len - 1;
int len1 = nums1_len - 1, len2 = nums2_len - 1;
while (len1 >= 0 && len2 >= 0) {
if (nums1[len1] >= nums2[len2]) {
nums1[i--] = nums1[len1--];
} else {
nums1[i--] = nums2[len2--];
}
}
while (len1 != -1) {
nums1[i--] = nums1[len1--];
}
while (len2 != -1) {
nums1[i--] = nums2[len2--];
}
}