栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Leetcode刷题100天—5895. 获取单值网格的最小操作数—day62

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode刷题100天—5895. 获取单值网格的最小操作数—day62

前言:

作者:神的孩子在歌唱

大家好,我叫智,一个算法小菜鸡

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

转载说明:跟我说明,务必注明来源,附带本人博客连接。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656639.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号