本文主要是介绍【LeetCode每日一题】2684. 矩阵中移动的最大次数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- [2684. 矩阵中移动的最大次数](https://leetcode.cn/problems/maximum-number-of-moves-in-a-grid/)
- 思虑:
- 代码:
2684. 矩阵中移动的最大次数
思虑:
1.将第一列的所有行坐标,用IntStream 来生成一个范围 [0, m) 内的整数流,用boxed方法进行装箱,并收集到Set集合中
2.从第一列开始,逐列进行遍历。
3.每一列,将集合中的所有行坐标取出,对每一个行坐标x,找出下一列可能满足的行坐标x,并且下一步要大
4.将符合的行坐标加入集合t,如果不能移动,返回当前列数
5.否则将t赋值給q,继续下一次的遍历
6.最后如果都遍历完了,说明走到最后一列,返回n-1
代码:
public int maxMoves(int[][] grid) {int m = grid.length;int n = grid[0].length;Set<Integer> q = IntStream.range(0, m).boxed().collect(Collectors.toSet());//使用 Java 8 中的 IntStream 来生成一个范围在// [0, m) 内的整数流,然后通过 boxed() 方法将 IntStream 装箱为// Stream<Integer>,最后通过collect(Collectors.toSet()) 方法// 将整数流中的元素收集到一个 Set 集合中。for (int j = 0; j < n - 1; j++) {Set<Integer> t = new HashSet<>();for (int x : q) {for (int i = x - 1; i <= x + 1; i++) {if (i >= 0 && i < m && grid[x][j] < grid[i][j]) {t.add(i);}}}if (t.isEmpty()){return j;}q = t;}return n-1;//最后如果都遍历完了,说明走到最后一列,返回n-1}
点击移步博客主页,欢迎光临~
这篇关于【LeetCode每日一题】2684. 矩阵中移动的最大次数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!