【LeetCode】416.分割等和子集
题目
给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
示例 1:
输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。
示例 2:
输入:nums = [1,2,3,5] 输出:false 解释:数组不能分割成两个元素和相等的子集。
提示:
1 <= nums.length <= 2001 <= nums[i] <= 100
解答
源代码
class Solution {public boolean canPartition(int[] nums) {if (nums.length < 2) {return false;}int sum = 0, max = 0;for (int num : nums) {sum += num;max = Math.max(max, num);}if (sum % 2 == 1) {return false;}if (max > sum / 2) {return false;}boolean[][] dp = new boolean[nums.length][sum / 2 + 1];dp[0][nums[0]] = true;for (int i = 0; i < nums.length; i++) {dp[i][0] = true;}for (int i = 1; i < nums.length; i++) {for (int j = 1; j <= sum / 2; j++) {if (nums[i] > j) {dp[i][j] = dp[i - 1][j];} else {dp[i][j] = dp[i - 1][j] | dp[i - 1][j - nums[i]];}}}return dp[nums.length - 1][sum / 2];}
}
总结
实际上是求能否从背包里选取元素,使这些元素之和等于数组所有元素之和的一半。dp[i][j]表示数组{0,…,i}中能否选出和为j的元素。
优化空间复杂度的算法也看了,勉强理解了,但是自己写应该还想不到这样优化。
相关文章:
【LeetCode】416.分割等和子集
题目 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示…...
go vet中的那些检测项
go vet 是 Go 语言自带的一个工具,用于分析 Go 代码中的常见错误和潜在问题。它可以检查代码中可能存在的各种问题,例如: 未使用的变量、函数或包 可疑的函数调用 错误的函数签名 程序中的竞态条件 错误的类型转换等 本文意图指令当前go vet所…...
Qt 自定义菜单、右键菜单
在接触Qt这段时间以来,经常遇到菜单项的问题(右键菜单、托盘菜单、按钮菜单等),QMenu用于菜单栏,上下文菜单,弹出菜单等,利用QMenuQAction就可以达到效果! 右键菜单实现:通过重写contextMenuEv…...
VScode 编辑器报错: ‘HelloWorld‘ is declared but its value is never read.
.vue文件被标识红色波浪线;提示: HelloWorld is declared but its value is never read. 问题原因: 因为vue3已经不支持vetur插件。 1、在扩展里面进行搜索Vetur插件,进行禁用或卸载; 2、在 VScode扩展里面搜索并下载…...
如何使用LLM实现文本自动生成视频
推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 介绍 基于扩散的图像生成模型代表了计算机视觉领域的革命性突破。这些进步由Imagen,DallE和MidJourney等模型开创,展示了文本条件图像生成的卓越功能。有关这些模型内部工作的…...
Rust处理JSON
基本操作 Cargo.toml: [package]name "json"version "0.1.0"edition "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]serde { version "1", features …...
Python如何操作网络爬虫
Python是一种非常强大的编程语言,用于网络爬虫操作也非常方便。Python提供了许多用于构建和操作网络爬虫的库和工具,如BeautifulSoup、Scrapy、Requests等。本文将详细介绍Python如何操作网络爬虫。 一、安装相关库 首先,我们需要安装Python…...
linux文件复制覆盖命令
目录 cp 命令参数2.cp -rf 出现复制不覆盖文件问题3.解决文件复制覆盖提示操作问题,以下四种方式,供大家参考使用。方法1:编写带cp的路径复制覆盖文件方法2:在CP命令前面加一个斜杠\,实现强制覆盖文件方法3:…...
modbus概览
modbus Modbus是Modicon(施耐德)公司于1979年开发的串行通信协议。它最初设计用于公司的可编程逻辑控制器(PLC)。 Modbus是一种开放式协议,支持使用RS232/RS485/RS422协议的串行设备,同时还支持调制解调器…...
KMP算法开荒
文章目录 一 、前言二、 暴力解法三、KMP算法原理3.1 自动子串的指针3.2 跳过多少个字符3.3 next数组 - 暴力3.4 next数组 - 求解 四 KMP实现 一 、前言 字符串匹配 import re print(re.search(www, www.runoob.com).span()) # 在起始位置匹配 print(re.search(com, www.run…...
XXL-JOB(2)
Glue模式 任务以源码的形式去维护调度中心,支持实时编译,无需指定JobHandler。 实际上是继承自JobHandler的java类代码,在执行器中运行,可以使用Resource/Autowire注入执行器里中的其他服务. 在执行器中添加service Service p…...
Linux常用命令_网络命令、关机重启命令
文章目录 1. 网络命令1.1 网络命令: write1.2 网络命令: wall1.3 网络命令: ping1.4 网络命令: ifconfig1.5 网络命令: mail1.6 网络命令: last1.7 网络命令: lastlog1.8 网络命令: traceroute1.9 网络命令: netstat1.10 网络命令: setup1.11 挂载命令 2. 关机重启命令2.1 shut…...
用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part I
用Cmake build OpenCV后,在VS中查看OpenCV源码的方法 Part I 写在最前面,最近这段时间的工作需要用opencv,不仅是调包,还要能够看到opencv的源码。然后就跟着网上的教程实现了一遍,在实现过程中,遇到了不少…...
如何使用Docker搭建ZooKeepe集群
1、拉取镜像 # docker pull zookeeper:3.7.12、创建网络 Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定。在实际部署中,需要指定容器ip,不允许其自行分配ip,尤其在搭建集群时。可以通过docker netw…...
【javaweb】学习日记Day3 - Ajax 前后端分离开发 入门
目录 一、Ajax 1、简介 2、Axios (没懂 暂留) (1)请求方式别名 (2)发送get请求 (3)发送post请求 (4)案例 二、前端工程化 1、Vue项目-目录结构 2、…...
SQL注入漏洞复现:探索不同类型的注入攻击方法
这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。 准备环境 sqlilabs靶场 安装:详细安装sqlmap详细教程_sqlmap安装教程_mingzhi61的博客-CSDN博客 一、基于错误的注入 注入讲解 介绍 基于错误的注入(Err…...
大彩串口屏使用记录
写在最前面 屏幕型号 DC10600M070 IDE VisualTFT(官方) VSCode(lua编程) 用之前看一下官方那个1小时的视频教程就大概懂控件怎么用了,用官方的软件VisualTFT很简单 本文只是简单记录遇到的一些坑 lua编辑器 VisualTF…...
Qt http 的认证方式以及简单实现
http 的认证方式 基本认证(Basic Authentication): 基本认证是最简单的HTTP认证方式。客户端在请求头中使用Base64编码的用户名和密码进行身份验证由于仅使用Base64编码,基本认证并不安全,因此建议与HTTPS一起使用,以…...
【图像分割】实现snake模型的活动轮廓模型以进行图像分割研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
【MongoDB系列】1.MongoDB 6.x 在 Windows 和 Linux 下的安装教程(详细)
本文主要介绍 MongoDB 最新版本 6.x 在Windows 和 Linux 操作系统下的安装方式,和过去 4.x 、5.x 有些许不同之处,供大家参考。 Windows 安装 进入官网下载 Mongodb 安装包,点此跳转,网站会自动检测当前操作系统提供最新的版本&…...
火绒误删explorer.exe导致Win10黑屏?保姆级修复指南(含安全模式+注册表操作)
火绒误删explorer.exe导致Win10黑屏的全面解决方案 当Windows 10系统突然陷入黑屏状态,只剩鼠标指针孤独地在屏幕上闪烁,这种体验对任何用户来说都堪称噩梦。特别是当发现罪魁祸首竟是日常依赖的安全软件火绒时,更让人措手不及。本文将系统性…...
探索前沿技术:如何利用AI优化现代软件开发流程
1. AI如何改变现代软件开发的面貌 十年前我刚入行时,软件开发还停留在"人肉编程"阶段。每个功能都要手动敲代码,调试全靠print大法,项目管理用Excel表格记录进度。现在回想起来,当时的开发方式就像用手工织布机做衣服—…...
什么是JVM——餐厅类比
目录 一、核心前提 二、JVM 整体定位(餐厅类比总纲) 三、JVM 核心模块拆解(餐厅类比 1:1 对应) 模块 1:类加载器子系统 → 餐厅 “收单 归档员” 核心动作: 关键补充(对应你的内存疑问&a…...
边缘AI量产倒计时!Python量化工具链必须在Q3完成的4项合规认证(含ISO/IEC 23053边缘AI标准映射)
第一章:边缘AI量产临界点与Python量化工具链的战略定位边缘AI正跨越从原型验证到规模化部署的关键临界点——芯片算力持续提升、模型轻量化技术成熟、工业场景对低延迟与隐私合规的需求刚性增长,共同推动边缘AI进入“可量产”阶段。在此背景下࿰…...
STM32 SRAM与FLASH调试配置实践
在SRAM与FLASH中调试STM32代码的工程实践1. 调试环境选择背景STM32微控制器的内部FLASH擦写次数约为1万次,频繁的调试过程会加速FLASH寿命的消耗。同时,SRAM存储器的写入速度显著快于内部FLASH,这使得在SRAM中进行程序调试具有以下优势&#…...
Elsevier投稿遇Publishing Options卡死?别慌,试试这3个亲测有效的急救方案(附Edge浏览器操作)
Elsevier投稿遇Publishing Options卡死?3个急救方案与Edge浏览器实战指南 凌晨三点,实验室的灯光依然亮着。张教授盯着屏幕上那个纹丝不动的"Publishing Options"页面,手指无意识地敲击着桌面。距离返修截止只剩不到12小时…...
easy-connect-gr-peach:GR-PEACH多网络连接抽象库详解
1. easy-connect-gr-peach 项目概述 easy-connect-gr-peach 是专为 Renesas GR-PEACH 开发板设计的轻量级网络连接抽象库,属于 mbed OS 生态中 easy-connect 系统在特定硬件平台上的适配实现。其核心目标并非提供底层驱动,而是构建一套 统一、可配置…...
飞机表面缺陷识别分割数据集labelme格式4612张5类别
注意数据集中有超过一半图片是增强图片数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数):4612标注数量(json文件个数):4612标注类别数:5标注类别名称:["Crack"…...
如何通过有效方法提升儿童专注力障碍的注意力集中度?
提升儿童专注力的有效策略与技巧解析 在帮助儿童提高注意力集中度的过程中,首先需要建立一个适合学习的环境。创造一个安静、整洁的学习空间,减少杂音和干扰,有助于孩子更好地专注。此外,开展一些分段学习的小技巧也是非常有效的方…...
如何高效获取QQ音乐资源?MCQTSS_QQMusic带来的无损音乐解析方案
如何高效获取QQ音乐资源?MCQTSS_QQMusic带来的无损音乐解析方案 【免费下载链接】MCQTSS_QQMusic QQ音乐解析 项目地址: https://gitcode.com/gh_mirrors/mc/MCQTSS_QQMusic MCQTSS_QQMusic是一款专注于QQ音乐资源解析的开源工具,能够帮助用户突破…...
