LeetCode 1981. 最小化目标值与所选元素的差(DP)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个大小为 m x n 的整数矩阵 mat 和一个整数 target 。

从矩阵的 每一行 中选择一个整数,你的目标是 最小化 所有选中元素之 与目标值 target 的 绝对差

返回 最小的绝对差

a 和 b 两数字的 绝对差 是 a - b 的绝对值。

示例 1:
在这里插入图片描述

输入:mat = [[1,2,3],[4,5,6],[7,8,9]], target = 13
输出:0
解释:一种可能的最优选择方案是:
- 第一行选出 1
- 第二行选出 5
- 第三行选出 7
所选元素的和是 13 ,等于目标值,所以绝对差是 0

示例 2:
在这里插入图片描述

输入:mat = [[1],[2],[3]], target = 100
输出:94
解释:唯一一种选择方案是:
- 第一行选出 1
- 第二行选出 2
- 第三行选出 3
所选元素的和是 6 ,绝对差是 94

示例 3:
在这里插入图片描述

输入:mat = [[1,2,9,8,7]], target = 6
输出:1
解释:最优的选择方案是选出第一行的 7 。
绝对差是 1 。提示:
m == mat.length
n == mat[i].length
1 <= m, n <= 70
1 <= mat[i][j] <= 70
1 <= target <= 800

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimize-the-difference-between-target-and-chosen-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {
public:int minimizeTheDifference(vector<vector<int>>& mat, int target) {int m = mat.size(), n = mat[0].size(), diff = INT_MAX, limit = 4901;vector<int> dp(limit, 0);for(int i = 0; i < n; ++i)dp[mat[0][i]] = 1; // 可以拿 标记为1for(int i = 1; i < m; ++i){vector<int> temp(limit, 0);for(int v = limit-1; v >= 0; --v){if(dp[v] == 0) // 前面状态不存在continue;for(int j = 0; j < n; ++j){if(v+mat[i][j] < limit)temp[v+mat[i][j]] = 1;}}swap(temp, dp);}for(int i = 0; i < limit; ++i){if(dp[i]){diff = min(diff, abs(i-target));}}return diff;}
};

1732 ms 68.5 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android c 11 编译,Android NDK r9b和编译C 11

对不起,以下应该是评论,而不是回答 – 因为我不知道你的代码有什么问题,但是你可以做些什么来弄清楚自己&#xff1a;这是我最小的Android.mk&#xff1a;LOCAL_PATH : $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE : hello-jniLOCAL_SRC_FILES : HelloJni.cppLOCAL_LDLIB…

hdu 5312 数学

转载于:https://www.cnblogs.com/cnblogs321114287/p/4676747.html

协程asyncio_Asyncio深入浅出

Asyncio是一个异步编程的框架&#xff0c;可以解决异步编程&#xff0c;协程调度问题&#xff0c;线程问题&#xff0c;是整个异步IO的解决方案。在学习asyncio之前&#xff0c;我们先来理清楚同步/异步的概念&#xff1a;同步是指完成事务的逻辑&#xff0c;先执行第一个事务&…

android qml 菜单,QML - ListView项目,用于显示菜单

当用户点击项目时&#xff0c;我正在寻找关于在列表项目下显示菜单的一些提示和指示 .如果我有这样的ListModel&#xff1a;ListModel {ListElement {name: "Bill Smith"number: "555 3264"}ListElement {name: "John Brown"number: "555 8…

随笔2

目前三件事 1.去除强迫思维 2.追女生 3.工作 这三件对于我来说都是非常困难的&#xff0c;慢慢的解决&#xff0c;不急&#xff0c;一定要坚持&#xff0c;不管遇到什么困难。。。转载于:https://www.cnblogs.com/zzyoucan/p/4678466.html

python 迭代器、生成器、yield、iter

文章目录1. 迭代器2. 生成器3. 标准库3.1 过滤3.2 映射3.3 合并3.4 排列组合3.5 重新排列4. yield from5. 可迭代的归约函数6. iter 还可以传入2个参数7. 生成器当成协程learn from 《流畅的python》 1. 迭代器 所有生成器都是迭代器&#xff0c;因为生成器完全实现了迭代器接…

java微信学习 接入

现在实习的公司要做微信开发&#xff0c;然而一直没安排任务&#xff0c;所以一直在看微信接口&#xff0c;记录下学习的内容 微信开发肯定要看的就是微信公众平台开发者文档&#xff0c;上面有每种接口的调用格式&#xff0c;刚开始学习的时候自己申请了一个订阅号&#xff0c…

钉钉老版本下载3.31_钉钉3.3.1老版本官方下载-钉钉3.3.1旧版本PC版官方版-东坡下载...

钉钉是由阿里巴巴研发的一款办公聊天工具&#xff0c;是新一代的团队沟通模式&#xff0c;该软件内置强大的办公功能&#xff0c;主要功能有传输文件&#xff0c;发送文字、语音、图片等&#xff0c;消息阅读以及外出打卡等功能&#xff0c;在这里为大家提供的是钉钉3.3.1旧版本…

Android 引用模块中的类,解决Android项目中找不到Module中的封装类或引用的第三方类库...

在日常开发中&#xff0c;现在越来越流行模块化开发&#xff0c;这就需要将项目分成不同的Module进行同时开发&#xff0c;最后在app层进行整合调用&#xff0c;但是不少开发人员都因为在build中添加关联代码&#xff0c;而找不到Module中封装的方法或引用的类库。下面就给大家…

LeetCode 1976. 到达目的地的方案数(迪杰斯特拉 Python 优先队列)

文章目录1. 题目2. 解题1. 题目 你在一个城市里&#xff0c;城市由 n 个路口组成&#xff0c;路口编号为 0 到 n - 1 &#xff0c;某些路口之间有 双向 道路。 输入保证你可以从任意路口出发到达其他任意路口&#xff0c;且任意两个路口之间最多有一条路。 给你一个整数 n 和…

shell:读取文件的每一行内容并输出

写法一&#xff1a;#!/bin/bash while read linedoecho $linedone < file(待读取的文件)写法二&#xff1a; #!/bin/bash cat file(待读取的文件) | while read linedoecho $linedone写法三&#xff1a;for line in cat file(待读取的文件)doecho $linedone以上三种写法都…

c++ sendmessage 鼠标 坐标是相对自身吗_【科普】你真的足够了解五轴加工吗?看完豁然开朗!...

近年来五轴联动数控加工中心在各领域得到了越来越广泛的应用。在实际应用中&#xff0c;每当人们碰见异形复杂零件高效、高质量加工难题时&#xff0c;五轴联动技术无疑是解决这类问题的重要手段。越来越多的厂家倾向于寻找五轴设备来满足高效率、高质量的加工。但是&#xff0…

32g内存 android开发,16G走开 我要32G内存的安卓手机

对于很多用户来说&#xff0c;在准备换手机的时候最纠结的莫过于是选择16G的还是32G的&#xff0c;毕竟价格相差好几百&#xff0c;但这里给你的建议是买32G的&#xff0c;即使贵点&#xff0c;但长远来说&#xff0c;是利大于弊的&#xff0c;为什么这么说呢&#xff0c;且听小…

python 上下文管理器、 else 块、@contextmanager

文章目录1. else2. with上下文管理器3. contextlib模块实用工具4. contextmanager 装饰器learn from 《流畅的python》 1. else for/else、while/else 和 try/else 前两者 只有在 没有被break 时&#xff0c;才会运行 else try 块中没有异常抛出时 才运行 else for i in ran…

ios 异常捕获

try {autoreleasepool {return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));}}catch (NSException *exception) {NSLog("exception%", exception.description);}finally {} 在ios中经常会使用try catch finally捕获异常, 也可以使用…

andriod studio 运行 无结果_无负压静音供水设备下篇一

1、无负压静音供水设备的安全接地保护a )控制柜的金属柜体上应有可靠的接地保护&#xff0c;与接地点相连的保护导线的截面应符合GB/T3797-2005中4.10.6的规定。与接地点连接的导线必须是黄、绿双色或铜编织线&#xff0c;并有明显的接地标识。a) 主接地点与设备任何有关的、因…

html设置div页面最底,使用css让大图片不超过网页宽度

让大图片不超过网页宽度&#xff0c;让图片不撑破通过CSS样式设置的DIV宽度&#xff01;接下来&#xff0c;我们来介绍下网站在开发DIVCSS的时候会遇到一个问题&#xff0c;在发布一个大图片的时候因为图片过宽会撑破自己设置的div宽度的问题。图片撑破布局原因1、由于浏览器版…

css3列表属性

</head> <!--first-child--给元素中的第一个子表签改变效果--> <style> li:first-child{ background-color:#00F; } /*last-child--给元素中最后一个标签改变效果*/ li:last-child{ background-color:#0F9; } /*li:nth-child()--给指定的位置添加属性&#x…

java上机题四取三排列_java语言特性概述

一.前言 我们都知道java是面向对象的编程&#xff0c;其中四个基本特性&#xff1a;抽象、封装、继承、多态。这四个特性&#xff0c;概括起来可以这么理解&#xff0c;抽象、封装、继承是多态的基础&#xff0c;多态是抽象、封装、继承的表现。二. JAVA 语言特点 a) 跨平台&am…

LeetCode 1984. 学生分数的最小差值

文章目录1. 题目2. 解题1. 题目 给你一个 下标从 0 开始 的整数数组 nums &#xff0c;其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。 从数组中选出任意 k 名学生的分数&#xff0c;使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 。 返回可能的 最小差…