2023年6月22日发(作者:)
MetaApp笔试题-在⼆维数组中查找值检察树是否是镜像对称树问题1,在⼆维数组中查找值问题描述现有⼀个n*n的⼆维正整数数组nums,每⾏元素保证递增,每列元素保证递增,求某正整数x是否存在于该⼆维数组中,需要尽量优化时间和空间复杂度输⼊描述:输⼊⼀个int的⼆维数组,⽬标值输出描述:输出⽬标值在⼆维数组中是否存在⽰例⽰例1输⼊1,2,32,3,43,4,53输出true解决思路分析题⽬很明显是不希望我们通过两次遍历查找到⽬标数字是否存在,⽽是需要根据规律去判断。⽅法1.根据规律判断,依次查找2.采⽤⼆分超找的⽅法代码实现//
思路1实现public class Main{ public static boolean searchMatrix(int[][] nums, int x) { if (nums == null || nums[0] == null) return false; //
从最右侧的最⼤值开始判断,⼩于直接跳⾏,⼤于,则依次递减查找 int i = 0, j = nums[0].length - 1; while (i < && j >= 0) { if (nums[i][j] == x) return true; else if (nums[i][j] > x) --j; else ++i; } return false; }}问题2,检察树是否是镜像对称树问题描述给定⼀个⼆叉树, 检查它是否是镜像对称的输⼊描述:输⼊⼀棵树输出描述:输出这棵树是否是镜像对称⽰例⽰例1输⼊例如以下是镜像对称的1/ 2 2/ / 3 4 4 3输出true解决思路分析1. 通过镜像树的对称性质可以发现,节点的左节点⽐较的是同层对称节点的右节点,节点的右节点⽐较的是同层对称节点的左节点⽅法1. 通过递归的⽅式判断代码实现public class IP地址校验 { static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public static boolean isTreeSymmetric(TreeNode root) { return isSame(root, root); } public static boolean isSame(TreeNode t1,TreeNode t2){ if (t1 == null && t2 == null) return true; if (t1 == null || t2 == null) return false; //
根节点值的⽐较,左节点和右节点⽐较,右节点和左节点⽐较 return == && isSame(,) && isSame(,); }}
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687386066a6196.html
评论列表(0条)