我是靠谱客的博主 活力八宝粥,最近开发中收集的这篇文章主要介绍判断二维数组是否是单调数组,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

判断二维数组是否是单调数组

import java.util.Arrays;

/*
 * 判断某个二维数组是否是单调二维数组
 */
public class ArrayDemo {
	public static void main(String[] args) {
		
		int[][] arr = {{1,2}, {10,15,100,19}, {13,16,17,20,20,30,40}, {108,107,106,105}, {}};
		printArr(arr);
		System.out.println(isDull2Array(arr));
	}
	
	public static void printArr(int[][] arr) {
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "t");
			}
			System.out.println();
		}
	}
	
	/*
	 * 返回值类型: boolean
	 * 参数列表: int[][] arr
	 * 方法名: isDull2Array
	 */
	public static boolean isDull2Array(int[][] arr) {
		boolean flag = true;
		// 遍历二维数组每一行
		for (int i = 0; i < arr.length; i++) {
			int[] rowArray = arr[i];
			System.out.println(Arrays.toString(rowArray));
			if (!isDullArray(rowArray)) {
				flag = false;
			}
		}
		
		// 获取最大列数
		int maxColum = arr[0].length;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i].length > maxColum) {
				maxColum = arr[i].length;
			}
		}
		System.out.println("maxColum:" + maxColum);
		
		int m = 0;
		// 遍历二维数组每一列
		for (int i = 0; i < maxColum; i++) {
			
			// 动态计算每一列的的长度
			// 如果索引在数组范围内,count++
			int count = 0;
			
			for (int n = 0; n < arr.length; n++) {
				if (m >= 0 && m < arr[n].length) {
					count ++;
				}
			}
			m++;
			
			int[] columnArray = new int[count];
			int index = 0;
			for (int j = 0; j < arr.length; j++) {
				if (i < 0 || i >= arr[j].length) {
					continue;
				}
				columnArray[index] = arr[j][i];
				index ++;
			}
			System.out.println(Arrays.toString(columnArray));
			if (!isDullArray(columnArray)) {
				flag = false;
			}
		}
		return flag;
	}
	
	/*
	 * 功能:判断某个一维数组是否是单调一维数组
	 * 返回值类型: boolean
	 * 参数列表: int[] arr
	 * 方法名: isDull1Array
	 */
	public static boolean isDullArray(int[] arr) {
		boolean flag = false;
		int[] srcArr = Arrays.copyOf(arr, arr.length);
		int[] reverseArr = Arrays.copyOf(arr, arr.length);
		int[] sortArr = Arrays.copyOf(arr, arr.length);
		Arrays.sort(reverseArr);
		reverseArray(reverseArr);
		Arrays.sort(sortArr);
//		System.out.println("srcArray: " + Arrays.toString(srcArr));
//		System.out.println("sortArray: " + Arrays.toString(sortArr));
//		System.out.println("reverseArray: " + Arrays.toString(reverseArr));
		if (Arrays.equals(sortArr, srcArr) || Arrays.equals(reverseArr, srcArr)) {
			flag = true;
		}
		return flag;
	}
	
	/*
	 * 数组的倒置
	 */
	public static void reverseArray(int[] arr) {
		for (int i = 0; i < arr.length / 2; i++) {
			int temp = 0;
			temp = arr[i];
			arr[i] = arr[arr.length - 1 - i];
			arr[arr.length - 1 - i] = temp;
		}
	}
}

最后

以上就是活力八宝粥为你收集整理的判断二维数组是否是单调数组的全部内容,希望文章能够帮你解决判断二维数组是否是单调数组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部