算法刷题手记(2)
2023-03-20 14:48:11 时间
描述
给一个
n*m
大小的矩阵,寻找矩阵中所有比邻居(上下左右,对角也算,不考虑边界,即8
个)都严格大的点。
返回一个n*m
大小的矩阵,如果原矩阵中的点比邻居都严格大,则该位置为1
,反之为0
。
1 public int[][] highpoints(int[][] grid) { 2 // write your code here 3 /** 4 * 创建一个同样规格的数组 5 */ 6 int[][] ints = new int[grid.length][grid[0].length]; 7 /** 8 * 循环遍历数组,目的:为了判断每个位置是否比周围都大 9 */ 10 for (int i = 0; i < grid.length; i++) { 11 /** 12 * 创建一个集合存储 当前遍历元素 判断范围的横坐标(比如:判断[2,2] 位置是否符合条件 集合中存储的横坐标范围是(1,2,3)),下面集合同理存储纵坐标范围 13 */ 14 ArrayList<Integer> abscissas = new ArrayList<>(); 15 abscissas.add(i - 1); 16 abscissas.add(i); 17 abscissas.add(i + 1); 18 for (int j = 0; j < grid[i].length; j++) { 19 Boolean flag = true; 20 ArrayList<Integer> ordinates = new ArrayList<>(); 21 ordinates.add(j - 1); 22 ordinates.add(j); 23 ordinates.add(j + 1); 24 25 /** 26 * 取出横坐标和增坐标进行组合,9种组合(其中一种代表的是对比的本体 需要排除,自己跟自己不用比,8个是被对比元素) 27 */ 28 outer: 29 for (int x = 0; x < abscissas.size(); x++) { 30 /** 31 * 如果横坐标越界 直接结束, 32 */ 33 if (abscissas.get(x) < 0 || abscissas.get(x) > grid[0].length - 1) { 34 continue outer; 35 } 36 inner: 37 for (int y = 0; y < ordinates.size(); y++) { 38 /** 39 * 判断3个维度:1、纵坐标是否越界 2、当前组合是否是要对比的本体,如果是就要排除 3、判断对比本体是否小于周围元素,如果不小于则置flag=false,如果都大于则flag不变为true 40 */ 41 if (ordinates.get(y) >= 0 && ordinates.get(y) < grid.length && !(abscissas.get(x) == i && ordinates.get(y) == j) && grid[i][j] <= grid[abscissas.get(x)][ordinates.get(y)]) { 42 flag = false; 43 break outer; 44 } 45 } 46 } 47 /** 48 * 如果判断完后,flag仍未true,则将待返回数组的当前位置置为1,否则置为0 49 */ 50 if (flag) { 51 ints[i][j] = 1; 52 } else { 53 ints[i][j] = 0; 54 } 55 } 56 } 57 return ints; 58 }
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十