leetcode 368. 最大整除子集(dp)

给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足:
answer[i] % answer[j] == 0 ,或
answer[j] % answer[i] == 0
如果存在多个有效解子集,返回其中任何一个均可。

示例 1:

输入:nums = [1,2,3]
输出:[1,2]
解释:[1,3] 也会被视为正确答案。
示例 2:

输入:nums = [1,2,4,8]
输出:[1,2,4,8]

提示:

1 <= nums.length <= 1000
1 <= nums[i] <= 2 * 109
nums 中的所有整数 互不相同

解题思路

从小到大进行排序,每次判断两个元素的整除关系时,只需要枚举前面元素,判断是否存在整除关系即可。
因为整除关系存在传递性,例如1,2,4,8,16,16整除8以外,同时也能整除能被8整除的元素(例如 1,2,4)
因此只需要一个一维数组记录当前元素能够整除元素的个数
状态转移方程为:

		for j,v:=range nums[:i] {//遍历前面元素if nums[i]%v==0&&dp[j]+1>dp[i]{//当前nums[j]可以被nums[i]整除dp[i]=dp[j]+1//因此与nums[j]有整除关系的,与nums[i]也存在相同的整除关系 //加一是因为与nums[i]与nums[j]也存在整除关系}}

代码

func largestDivisibleSubset(nums []int) []int {sort.Ints(nums)n := len(nums)dp := make([]int, n)for i:=range dp{dp[i]=1}maxS,maxV:=1,nums[0]for i := 1; i < n; i++ {for j,v:=range nums[:i] {if nums[i]%v==0&&dp[j]+1>dp[i]{dp[i]=dp[j]+1}}if dp[i]>maxS{maxS,maxV=dp[i],nums[i]}}var res []intif maxS==1{res=append(res,maxV)return res}for i := n-1; i >=0 ; i-- {if maxS>0&&maxV%nums[i]==0&&dp[i]==maxS{maxS--maxV=nums[i]res=append(res,maxV)}}return res}

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

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

相关文章

在Centos中安装mysql

下载mysql这里是通过安装Yum源rpm包的方式安装,所以第一步是先下载rpm包 1.打开Mysql官网 https://www.mysql.com/, 点击如图选中的按钮 点击如图框选的按钮 把页面拉倒最下面,选择对应版本下载,博主这里用的是CentOS7 下载完成后上传到服务器,由于是yum源的安装包,所以…

硕士可以跟别的导师做实验吗_如何成为一名导师可以成为双刃剑

硕士可以跟别的导师做实验吗Mentoring is the ability to give advise or train someone, often times, who is less knowledgeable in a particular field. This is pretty much common place in tech companies. There you usually have senior developers who, besides bein…

linux中权限对文件和目录的意义

1.权限对文件的意义&#xff1a; 读&#xff1a;可查看文件的内容 写&#xff1a;可修改文件的内容&#xff08;但不能删除文件&#xff09; 执行&#xff1a;可执行文件 2.权限对目录的意义&#xff1a; 读&#xff1a;可以查看目录下的内容&#xff0c;即可以读取该目录下的结…

Docker 入门(1)虚拟化和容器

1 虚拟化 虚拟化是为一些组件&#xff08;例如虚拟应用、服务器、存储和网络&#xff09;创建基于软件的&#xff08;或虚拟&#xff09;表现形式的过程。它是降低所有规模企业的 IT 开销&#xff0c;同时提高其效率和敏捷性的最有效方式。 1.1 虚拟化用于程序跨平台兼容 要…

量子相干与量子纠缠_量子分类

量子相干与量子纠缠My goal here was to build a quantum deep neural network for classification tasks, but all the effort involved in calculating errors, updating weights, training a model, and so forth turned out to be completely unnecessary. The above circu…

三角函数式的化简

前言 为什么需要化简三角函数式&#xff1f; 一、什么是三角函数式的化简&#xff1f; 二、三角函数式的化简标准是什么&#xff1f; 三、三角函数式化简可能用到的变形&#xff1a; 弦切互化&#xff0c;1的代换&#xff0c;通分约分&#xff0c;配方展开&#xff0c;提取公因…

Python -- xlrd,xlwt,xlutils 读写同一个Excel

最近开始学习python,想做做简单的自动化测试&#xff0c;需要读写excel,然后就找到了xlrd来读取Excel文件&#xff0c;使用xlwt来生成Excel文件&#xff08;可以控制Excel中单元格的格式&#xff09;&#xff0c;需要注意的是&#xff0c;用xlrd读取excel是不能对其进行操作的&…

计算机工程师分级_这些是每个计算机工程师都应该知道的数字

计算机工程师分级In 2010, Jeff Dean from Google gave a wonderful talk at Stanford that made him quite famous. In it, he discussed a few numbers that are relevant to computing systems. Then Peter Norvig published those numbers for the first time on the inter…

leetcode 377. 组合总和 Ⅳ(dp)

给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], target 4 输出&#xff1a;7 解释&…

1.4- 定时任务总结之九句箴言

1.4定时任务之九句箴言九句箴言---- 不会九句箴言别做运维1.定时任务规则之前加注释2.使用脚本代替命令行制定定时任务3.定时任务中date命令%的特殊含义定时任务中,%表示回车 -----可以使用\转义4.运行脚本一定要用/bin/sh或sh脚本不必须有x权限5.定时任务中-命令或脚本的输出…

ubuntu 18.04 vi里面方向键变成abcd 处理办法

sudo apt-get remove vim-common sudo apt-get install vim 转载于:https://www.cnblogs.com/testing-BH/p/11506400.html

知识力量_网络分析的力量

知识力量The most common way to store data is in what we call relational form. Most systems get analyzed as collections of independent data points. It looks something like this:存储数据的最常见方式是我们所谓的关系形式。 大多数系统作为独立数据点的集合进行分析…

python里的apply,applymap和map的区别

apply,applymap和map的应用总结:apply 用在dataframe上&#xff0c;用于对row或者column进行计算&#xff1b;applymap 用于dataframe上&#xff0c;是元素级别的操作&#xff1b;map &#xff08;其实是python自带的&#xff09;用于series上&#xff0c;是元素级别的操作。如…

验证曲线和学习曲线_如何击败技术学习曲线的怪物

验证曲线和学习曲线Doing what I do for a living, which these days mostly involves creating technology books and courseware, I’m constantly learning new technologies. In a way, my new tech adventures are not much different than the ones most IT pros face, e…

234

234 转载于:https://www.cnblogs.com/Forever77/p/11509588.html

SCCM PXE客户端无法加载DP(分发点)映像

上一篇文章我们讲到了一个比较典型的PXE客户端无法找到操作系统映像的故障&#xff0c;今天再和大家一起分享一个关于 PXE客户端无法加载分发点映像的问题。具体的报错截图如下&#xff1a;从报错中我们可以看到&#xff0c;PXE客户端已经成功的找到了SCCM服务器&#xff0c;并…

Docker 入门(2)技术实现和核心组成

1. Docker 的技术实现 Docker 的实现&#xff0c;主要归结于三大技术&#xff1a; 命名空间 ( Namespaces )控制组 ( Control Groups )联合文件系统 ( Union File System ) 1.1 Namespace 命名空间可以有效地帮助Docker分离进程树、网络接口、挂载点以及进程间通信等资源。L…

marlin 三角洲_带火花的三角洲湖:什么和为什么?

marlin 三角洲Let me start by introducing two problems that I have dealt time and again with my experience with Apache Spark:首先&#xff0c;我介绍一下我在Apache Spark上的经历反复解决的两个问题&#xff1a; Data “overwrite” on the same path causing data l…

环境变量的作用

1. PATH环境变量。作用是指定命令搜索路径&#xff0c;在shell下面执行命令时&#xff0c;它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中&#xff0c;bin目录中包含经常要用到的可执行文件如javac/ja…

WeWork通过向225,000个社区征税来拼命地从Meetup.com榨取现金

Update: A few hours after I published this article, Meetup quietly added a note to the top of their announcement. They have not tweeted or done anything else to publicize this note, but some people noticed it and shared it with me.更新&#xff1a;在我发布本…