前言:
5895. 获取单值网格的最小 *** 作数作者:神的孩子在歌唱
大家好,我叫智,一个算法小菜鸡
难度中等3收藏分享切换为英文接收动态反馈
给你一个大小为 m x n 的二维整数网格 grid 和一个整数 x 。每一次 *** 作,你可以对 grid 中的任一元素 加 x 或 减 x 。
单值网格 是全部元素都相等的网格。
返回使网格化为单值网格所需的 最小 *** 作数。如果不能,返回 -1 。
示例 1:
输入:grid = [[2,4],[6,8]], x = 2 输出:4 解释:可以执行下述 *** 作使所有元素都等于 4 : - 2 加 x 一次。 - 6 减 x 一次。 - 8 减 x 两次。 共计 4 次 *** 作。
示例 2:
输入:grid = [[1,5],[2,3]], x = 1 输出:5 解释:可以使所有元素都等于 3 。
示例 3:
输入:grid = [[1,2],[3,4]], x = 2 输出:-1 解释:无法使所有元素相等。
提示:
- m == grid.length
- n == grid[i].length
- 1 <= m, n <= 105
- 1 <= m * n <= 105
- 1 <= x, grid[i][j] <= 104
具体思路写法(这个写法很垃圾,适合参考)
import java.util.Arrays; import java.util.List; public class ddd { public int minOperations(int[][] grid, int x) { int num=0; int m=grid.length; int n=grid[0].length; int[] list=new int[m*n]; int c=0; // 遍历成一维数组 for(int i=0;ipivot) { return -1; } num++; // System.out.println(num); } } // 如果在中间值右边就通过加x来判断 else if (re>pivot) { while(re>pivot) { re-=x; if (re 优化,通过abs取差值的绝对值,这样就不用我们判断ifelse了
import java.util.Arrays; import java.util.List; public class ddd { public int minOperations(int[][] grid, int x) { int num=0; int m=grid.length; int n=grid[0].length; int[] list=new int[m*n]; int c=0; for(int i=0;i本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)