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.pswp.cn/news/391315.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391315.shtml
英文地址,請注明出處:http://en.pswp.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;在我發布本…