首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

算法题:Java编程判断给定坐标数组中可以组成正方形个数并打印它们坐标组合

前言 某次参加华为OD机考,其中抽中一道题是输入一组坐标集合,然后输出可以组成正方形个数以及能组成正方形坐标组合,当时自己也是一筹莫展,竟然用四条相邻边相等和相邻两条边夹角为90度这样数学建模来解决...,不重合则一定不是正方形; 3、根据点坐标判断两条邻边是否相等以及两条邻边长度平方和是否等于对象线长度平方和; 4、若同时满足条件2和4,则该组四个点组成正方形正方形计数加1,同时将该坐标组合添加到一个...List中; 5、遍历结束,输出正方形计数并遍历打印所有能组成正方形List中坐标组合。...,表示至少有3个点在同一条直线上,必定不能组成正方形 } if(index==1){ // 正方形中两对相互组成对角线两个点横纵坐标值满足相等...个坐标中选出4个点一共有C(4,9)共21种组合,从程序输出结果我们可以看到它们只能组成5个正方形,把他们放到坐标系中验证5组4个点组合都可以组成正方形

28920

2021-06-26:给定一个只有0和1组成二维数组,返回边框全是1最大正方形面积。

2021-06-26:给定一个只有0和1组成二维数组,返回边框全是1最大正方形面积。 福大大 答案2021-06-26: 1.自然智慧。遍历每个点,复杂度是O(N**2)。...每个点往右下看从1到n正方形,复杂度是O(N),每个正方形,判断边框是否为1,复杂度是O(N)。所以总体时间复杂度是O(N**4),额外空间复杂度是O(1)。 2.每个正方形边框是否为1优化。...一个二维数组,记录dpToRight[i][j],表示当前点往右看1个数。另一个二维数组,记录dpToDown[i][j],表示当前点往下看1个数。...将近一天研究,以为时间复杂度可以优化成O(N**2),但实际上并不能,至少我目前没想出来。时间复杂度是O(N**3),额外空间复杂度是O(N**2)。 代码用golang编写。

37930

2021-06-26:给定一个只有0和1组成二维数组,返回边框全是1最大正方形面积。

2021-06-26:给定一个只有0和1组成二维数组,返回边框全是1最大正方形面积。 福大大 答案2021-06-26: 1.自然智慧。遍历每个点,复杂度是O(N2)。...每个点往右下看从1到n正方形,复杂度是O(N),每个正方形,判断边框是否为1,复杂度是O(N)。所以总体时间复杂度是O(N4),额外空间复杂度是O(1)。 2.每个正方形边框是否为1优化。...一个二维数组,记录dpToRighti,表示当前点往右看1个数。另一个二维数组,记录dpToDowni,表示当前点往下看1个数。...将近一天研究,以为时间复杂度可以优化成O(N2),但实际上并不能,至少我目前没想出来。时间复杂度是O(N3),额外空间复杂度是O(N**2)。 代码用golang编写。

38210

2023-11-15:用go语言,如果一个正方形矩阵上下对称并且左右对称,对称意思是互为镜像, 那么称这个正方形矩阵叫做神奇矩

2023-11-15:用go语言,如果一个正方形矩阵上下对称并且左右对称,对称意思是互为镜像, 那么称这个正方形矩阵叫做神奇矩阵, 比如 : 1 5 5 1 6 3 3 6 6 3 3 6 1 5 5...1 这个正方形矩阵就是神奇矩阵。...给定一个大矩阵n*m,返回其中神奇矩阵数目。 1 <= n,m <= 1000。 来自左程云。 答案2023-11-15: go代码用灵捷3.5编写。...6.构建arr1、arr2、arr3前缀哈希和,存入sum1、sum2、sum3中。 7.定义函数hash,用于计算矩阵中(a,b)到(c,d)范围内哈希值。...8.定义函数ok,用于判断以(a,b)到(c,d)范围内正方形是否为神奇矩阵。 9.定义函数number,用于统计大矩阵中神奇矩阵数量。分别计算奇数长度和偶数长度正方形数量,返回总数量。

24370

2023-11-18:用go语言,如果一个正方形矩阵上下对称并且左右对称,对称意思是互为镜像, 那么称这个正方形矩阵叫做神奇矩

2023-11-18:用go语言,如果一个正方形矩阵上下对称并且左右对称,对称意思是互为镜像, 那么称这个正方形矩阵叫做神奇矩阵。...比如 : 1 5 5 1 6 3 3 6 6 3 3 6 1 5 5 1 这个正方形矩阵就是神奇矩阵。 给定一个大矩阵n*m,返回其中神奇矩阵数目。 1 <= n,m <= 1000。...6.统计enlarge数组中每个奇数行、奇数列位置值除以2结果,作为神奇矩阵数量。 7.统计enlarge数组中每个偶数行、偶数列位置值减去1后除以2结果,再累加到神奇矩阵数量。...8.返回神奇矩阵数量作为结果。 总时间复杂度:O(n * m * log(min(n, m))),其中n为矩阵行数,m为矩阵列数。...主要耗时是manacher函数预处理过程,而manacher函数时间复杂度为O(log(min(n, m)))。 总额外空间复杂度:O(n * m),需要额外数组保存回文长度。

17640

【leetcode】#542.01 给定一个 0 和 1 组成矩阵,找出每个元素到最近 0 距离

题目描述: 给定一个 0 和 1 组成矩阵,找出每个元素到最近 0 距离。 两个相邻元素间距离为 1 。...给定矩阵中至少有一个元素是 0。 矩阵中元素只在四个方向上相邻: 上、下、左、右。...一、创建矩阵 示例:创建一个根据行列,创建数组,并填入数字; let col = 3; //列数 let row = 3; //行数 let matrix = []; //创建一个数组存储空间 let...//获取矩阵行数 let col = matrix[0].length; //获取矩阵列 var temp = [];//创建一个数组存储空间 for(var i = 0; i...let col = matrix[0].length; //获取矩阵列 var temp = [];//创建一个数组存储空间 for(var i = 0; i < row; i++){ temp

87620

(进阶版)有了四步解题法模板,再也不害怕动态规划!

dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 实现 有了这些,这道题还没完,我们还要考虑状态数组初始化问题,对于上边界和左边界点,因为它们只能从一个方向过来,需要单独考虑...题目描述 在一个 0 和 1 组成二维矩阵内,找到只包含 1 最大正方形,并返回其面积。...首先一个正方形四个顶点构成,如果说我们在矩阵中随机找四个点,然后判断该四个点组成是不是正方形,如果是正方形,然后看组成正方形每个位置元素是不是都是 ‘1’,这种方式也是可行,但是比较暴力,...那我们就会思考,组成一个正方形是不是必须要四个点都找到?如果我们找出其中三个点,甚至说两个点,能不能确定这个正方形呢?...正方形,也就是 dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1 实现 在实现上,我们需要单独考虑两种情况,

1.3K21

2023-01-06:给定一个小写字母组成字符串str,长度为N,给定一个0、1组成数组arr,长度为N,arr[i

2023-01-06:给定一个小写字母组成字符串str,长度为N, 给定一个0、1组成数组arr,长度为N, arr[i]等于 0 表示str中i位置字符不许修改, arr[i] 等于...1表示str中i位置字符允许修改, 给定一个正数m,表示在任意允许修改位置, 可以把该位置字符变成a~z中任何一个, 可以修改m次。...返回在最多修改m次情况下,全是一种字符最长子串是多长。 1 <= N, M <= 10^5, 所有字符都是小写。 来自字节。 答案2023-01-06: 尝试全变成a一直到全变成z,遍历26次。...// 右边界 // [l..r) let mut r = 0; // 用了几次修改了 // change == m 用完时候...(aim)+1)) { // 右边界 // [l..r) int32 r = 0; // 用了几次修改了 // change == m 用完时候

50530

Excel图表学习65: 制作一个复选框控制动态图表

如下图1所示,当我们选取/取消选取图表下方复选框时,图表会自动变化。 ? 图1 下面,讲解这个动态图表详细绘制步骤。 用于绘制图表数据如下图2所示。...这样,当单元格C11中值为TRUE时,其下方对应单元格中值为数值;为FALSE时,对应错误值#N/A。对于列D和列E也是如此。 ?...图2 先选择单元格区域C13:C20,插入一个簇状柱形图,并使其横坐标数据为单元格区域B3:B9中值,结果如下图3所示。 ?...图3 在上图3所示图表中添加单元格区域D14:D20中数据,结果如下图4所示。 ?...图5 得到结果如下图6所示。 ? 图6 继续在图表中添加单元格区域E14:E20中数据,得到如下图7所示图表。 ?

1.8K30

这是一篇很好互动式文章,Framer Motion 布局动画

例如,不能对justify-content变化制作动画,因为justify-content不是一个可动画属性。 性能问题。...如果我们单独看一下这些变换,我们就可以知道这个正方形是如何结束: 我们算法首先将最终位置左上角与原始位置左上角对齐,然后将其缩小到初始尺寸。...有了这个见解,我们也可以通过使用中心之间距离而不是左上角点来解决这个问题。 纠正子元素变形 到目前为止,我们已经能够制作一个布局动画,可以无缝过渡到大小和位置变化。...当我们反转到一个较小正方形时,文本最终会变小,因为正方形被按比例缩小。同样地,当我们反转到一个较大正方形时,文本最终会变大,因为正方形被按比例放大了。...尝试 我尝试第一件事是,在父元素要做动画之前,先计算一次反比例,然后在子元素上单独运行一个动画。

2.4K20

空地和墙组成迷宫中有一个球。球

空地和墙组成迷宫中有一个球。球可以向上(u)下(d)左(l)右(r)四个方向滚动,但在遇到墙壁前不会停止滚动。当球停下时,可以选择下一个方向。迷宫中还有一个洞,当球运动经过洞时,就会掉进洞里。...给定球起始位置,目的地和迷宫,找出让球以最短距离掉进洞里路径。 距离定义是球从起始位置(不包括)到目的地(包括)经过空地个数。通过'u', 'd', 'l' 和 'r'输出球移动方向。...由于可能有多条最短路径, 请输出字典序最小路径。如果球无法进入洞,输出"impossible"。 迷宫一个0和1二维数组表示。 1表示墙壁,0表示空地。你可以假定迷宫边缘都是墙壁。...// n 行数 // m 列数 // 当前来到节点,cur -> (r,c) 方向 路径(决定) // v [行][列][方向] 一个格子,其实在宽度有限遍历时,是4个点!...// q 下一层队列 // s 下一层队列填到了哪,size // 当前点cur,该分裂分裂,该继续走继续走,所产生一下层点,进入q,s++ // 返回值:q增长到了哪?

28110

最大正方形 算法解析

一、题目 1、算法题目 “在0和1组成矩阵中找到只包含1最大正方形,返回其面积。” 题目链接: 来源:力扣(LeetCode) 链接: 221....最大正方形 - 力扣(LeetCode) 2、题目描述 在一个 '0' 和 '1' 组成二维矩阵内,找到只包含 '1' 最大正方形,并返回其面积。...由于正方形面积等于边长平方,因此要找到最大正方形面积,就需要找到最大正方形边长,然后计算最大边长平方即可。 具体,就是遍历矩阵中每个元素,遇到1,则将钙元素作为正方形左上角。...确定左上角后,根据左上角行和列计算可能正方形边长,在行数和列数范围内找出只包含1最大正方形。 每次右或下新增一行,判断新增行和列是否满足所有元素都是1。...对于每个可能正方形边长都不会超过行数和列数,因此遍历该正方形每个元素,并且判断是不是只包含1时间复杂度为O(min(m,n)2)。

32220

输出图案类问题思路

一、问题导入 编写一个程序,只用两条输出语句,生成一个像半个5*5正方形形状(直角三角形)#符号图案: ##### #### ### ## # 二、问题分析 我们可以采用消减法,先把它想象成一个5*5...那么,接下来应该怎样修改代码,使它产生半正方形图案呢? 如果我们观察上面的程序清单并把它与自己所需要正方形输出进行比较,可以发现问题在于条件表达式hashNum <= 5上。...这个条件产生了5个相同5个#符号所组成行。所以我们需要一种机制,调整每行所生成符号数量,使第一行为5个符号,第二行为4个符号,以此类推。...接下来,我们要进行另一个消减程序试验:写一段代码,功能:显示数字从5到1,每个数字出现在单独一行中 分析:我们必须找到一种表达式,在第一行时其值为5,在第二行时其值为4,接下来以此类推。...所以“显示数字从5到1,每个数字出现在单独一行中”代码为: 1 for(int row = 1;row <= 5;row++) 2 { 3 printf("%d\n"

1.9K40
领券