目錄
#Partition Equal Subset Sum " >#Partition Equal Subset Sum
數組分組求和問題,題目說條件很多數字都是整數不超過100 數組長度不超過200,就是讓用動態規劃來做,就是背包問題的簡化版,先求所有數字的和,為偶數才能分成兩組,否則直接返回false,然後除以2求最終要分組的和,這個值就類似背包問題的容量,數組中的數字就類似要裝進背包的東西,不同於背包問題的是背包問題要遍歷到最後一個格子,這裡只有又格子值與這個和相等就行了,不一定要遍歷到最後一個格子" >數組分組求和問題,題目說條件很多數字都是整數不超過100 數組長度不超過200,就是讓用動態規劃來做,就是背包問題的簡化版,先求所有數字的和,為偶數才能分成兩組,否則直接返回false,然後除以2求最終要分組的和,這個值就類似背包問題的容量,數組中的數字就類似要裝進背包的東西,不同於背包問題的是背包問題要遍歷到最後一個格子,這裡只有又格子值與這個和相等就行了,不一定要遍歷到最後一個格子
首頁 後端開發 Python教學 lintcode 題目記錄3

lintcode 題目記錄3

Jun 23, 2017 pm 03:49 PM
記錄

Expression Expand  Word Break II Partition Equal Subset Sum

 Expression Expand 

#字串展開問題,依照[]前的數字展開字串,主要是維護兩個棧一個是展開個數棧一個是展開內容棧,內容棧添加[用來判斷是否把要展開的內容全部推出,然後要注意數字可能不止一位其他就無所謂了

class Solution:# @param {string} s  an expression includes numbers, letters and brackets# @return {string} a stringdef expressionExpand(self, s):# Write your code herenl=[]
        sl=[]
        sc=''res=''lstr=''for i in s:if i.isdigit():if not lstr.isdigit():
                    sl.append(sc)
                    sc=''sc = sc + ielse:if i=='[':
                    nl.append(int(sc))
                    sc = ''sl.append('[')elif i==']':
                    n=nl.pop()while len(sl)>0:
                        k=sl.pop()if k== '[':breaksc = k+ sc
                    ts=''for j in range(n):ts= ts + sc
                    sc=''if len(nl) > 0:sl.append(ts)else:
                        res = res + tselse:if len(nl)>0:
                        sc = sc + ielse:
                        res = res + i
            lstr=ireturn res
登入後複製

 Word Break II  

單字切分問題,在陣列重從開頭的字串開始查找,找到了就加入棧,然後每次循環pop  判斷pop出的字串是否完整,完整加入結果,不完整找後續,能找到後續加入棧,沒有繼續下一次循環,這裡又一定歧義,wordDict裡邊的字符串是否可以重複使用的問題?

這玩意當字串很長後邊的字典數組很多的時候會很慢,暫時沒想到什麼優化的演算法,lintcode給的測試資料裡邊好像沒有這種情況只有一個特殊情況,所以前邊加了一個濾波算通過了,還有要注意python的startwith函數 

如果參數是''總是回傳True略坑爹····

class Solution:# @param {string} s a string# @param {set[str]} wordDict a set of wordsdef wordBreak(self, s, wordDict):# Write your code herehead=[]
        ss=''for i in s:if ss=='':
                ss=ielse:if i not in ss:
                    ss = ss + ifor i in ss:
            flag=Falsefor di in wordDict:if i in di:
                    flag=Truebreak;if not flag:return []for di in wordDict:if di !='' and  s.startswith(di):
                head.append(di)if len(head)<1:return []
        cur=s
        res=[]while len(head)>0:
            h=head.pop()
            le=len(h.replace(' ',''))
            cur=s[le:]if cur == '': 
                res.append(h)continuefor di in wordDict:if cur.startswith(di):
                    head.append(h+' '+di)                    return res
登入後複製

#Partition Equal Subset Sum

數組分組求和問題,題目說條件很多數字都是整數不超過100 數組長度不超過200,就是讓用動態規劃來做,就是背包問題的簡化版,先求所有數字的和,為偶數才能分成兩組,否則直接返回false,然後除以2求最終要分組的和,這個值就類似背包問題的容量,數組中的數字就類似要裝進背包的東西,不同於背包問題的是背包問題要遍歷到最後一個格子,這裡只有又格子值與這個和相等就行了,不一定要遍歷到最後一個格子

class Solution:# @param {int[]} nums a non-empty array only positive integers# @return {boolean} return true if can partition or falsedef canPartition(self, nums):# Write your code heresum=0for n in nums:
            sum = sum +nif sum%2!=0:return False
        k=sum//2a=[None]*len(nums)for i in range(len(nums)):
            a[i]=[0]*k            for i in range(len(nums)):for j in range(k):if i == 0:
                    a[i][j] = nums[i] if nums[i] < j+1 else 0else:if nums[i]> j+1:
                        a[i][j]=a[i-1][j]else:
                        a[i][j]=max(nums[i]+a[i-1][j+1-nums[i]],a[i-1][j])                        if a[i][j] ==k:return Truereturn False
登入後複製

 

##

以上是lintcode 題目記錄3的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

拼多多買過的東西在哪裡查看記錄 查看買過的商品記錄的方法 拼多多買過的東西在哪裡查看記錄 查看買過的商品記錄的方法 Mar 12, 2024 pm 07:20 PM

拼多多軟體內提供的商品好物非常多,隨時隨地想買就買,而且每一件商品品質都是嚴格把關的,件件商品都是正品,不同還有非常多優惠的購物折扣,讓大家網購根本停不下來。輸入手機號碼在線登錄,在線添加多個收貨地址和聯繫方式,可以隨時查看最新的物流動態,不同品類的商品板塊都是開放的,搜索上下滑動選購下單,足不出戶輕鬆體驗便捷的網購服務,還能查看所有的購買記錄,包括自己買過的商品,數十個購物紅包、優惠券免費領取使用,現在小編在線詳細為拼多多用戶們帶來查看買過的商品記錄的方法。  1.打開手機,點選拼多多圖標,

如何查看和管理 Linux 命令歷史記錄 如何查看和管理 Linux 命令歷史記錄 Aug 01, 2023 pm 09:17 PM

如何在Linux中查看命令歷史記錄在Linux中,我們使用history命令來查看所有先前執行的命令的清單。它有一個非常簡單的語法:history與歷史記錄命令配對的一些選項包括:選項描述-c清除當前會話的命令歷史記錄-w將命令歷史記錄寫入檔案-r從歷史記錄檔案重新載入命令歷史記錄-n限制最近命令的輸出數量只需執行history命令即可在Linux終端機中查看所有先前執行的命令的清單:除了查看命令歷史記錄之外,您還可以管理命令歷史記錄並執行修改先前執行的命令、反向搜尋指令歷史記錄甚至完全刪除歷史記

如何在iPhone中檢查通話記錄並將其匯出? 如何在iPhone中檢查通話記錄並將其匯出? Jul 05, 2023 pm 12:54 PM

iPhone中的通話記錄經常被低估,並且是iPhone最關鍵的功能之一。憑藉其簡單性,此功能具有至關重要的意義,可提供有關在裝置上撥打或接聽的通話的重要見解。無論是出於工作目的還是法律訴訟,存取通話記錄的能力都被證明是無價的。簡單來說,通話記錄是指每當撥打或接聽電話時在iPhone上建立的條目。這些日誌包含關鍵訊息,包括聯絡人的姓名(如果未另存為聯絡人,則為號碼)、時間戳記、持續時間和呼叫狀態(已撥打、未接聽或未接聽)。它們是您的通訊歷史記錄的簡明記錄。通話記錄包括儲存在iPhone上的通話記錄條

如何在iPhone上的健康應用程式中查看您的用藥日誌記錄 如何在iPhone上的健康應用程式中查看您的用藥日誌記錄 Nov 29, 2023 pm 08:46 PM

iPhone可讓您在「健康」App中添加藥物,以便追蹤和管理您每天服用的藥物、維生素和補充劑。然後,您可以在設備上收到通知時記錄已服用或跳過的藥物。記錄用藥後,您可以查看您服用或跳過用藥的頻率,以幫助您追蹤自己的健康狀況。在這篇文章中,我們將指導您在iPhone上的健康應用程式中查看所選藥物的日誌歷史記錄。如何在「健康」App中查看用藥日誌歷史記錄簡短指南:前往「健康」App&gt;瀏覽「&gt;用藥」&gt;用藥「&gt;選擇一種用藥&gt;」選項「&a

C#開發建議:日誌記錄與監控系統 C#開發建議:日誌記錄與監控系統 Nov 22, 2023 pm 08:30 PM

C#開發建議:日誌記錄與監控系統摘要:在軟體開發過程中,日誌記錄與監控系統是至關重要的工具。本文章將介紹C#開發中日誌記錄與監控系統的作用與實施建議。引言:在大型軟體開發專案中,日誌記錄和監控是不可或缺的工具。它們可以幫助我們即時了解程式運行狀況,快速發現並解決問題。本文將討論C#開發中如何使用日誌記錄和監控系統,以提高軟體品質和開發效率。日誌記錄系統的作用

如何進行Java開發專案的日誌記錄與監控 如何進行Java開發專案的日誌記錄與監控 Nov 03, 2023 am 10:09 AM

如何進行Java開發專案的日誌記錄與監控一、背景介紹隨著網路的快速發展,越來越多的企業開始進行Java開發,建構各種類型的應用程式。而在開發過程中,日誌記錄和監控是一個不可忽視的重要環節。透過日誌記錄與監控,開發人員可以及時發現和解決問題,確保應用程式的穩定性和安全性。二、日誌記錄的重要性1.問題追蹤:在應用程式發生錯誤時,日誌記錄可以幫助我們快速定位問題

如何在iPhone上清除歷史記錄 如何在iPhone上清除歷史記錄 Jun 29, 2023 pm 01:13 PM

如何在Safari中清除iPhone歷史記錄?要清除Apple的Safari上的瀏覽和搜尋記錄,您需要在裝置上開啟「設定」應用程式。選擇「設定」後,您需要向下捲動並選擇Safari,然後將顯示另一個選單,您需要選擇清除歷史記錄和網站資料。現在您需要從選單中選擇清除歷史記錄和數據,這將從Apple的Safari瀏覽器中刪除所有搜尋記錄,瀏覽歷史記錄,cookie和數據。就是這樣,所有先前的瀏覽記錄和搜尋記錄現在都已從Safari中刪除。如果您不想刪除Safari中的所有搜尋記錄

keep怎麼記錄跑步公里 記錄跑步軌跡在哪裡 keep怎麼記錄跑步公里 記錄跑步軌跡在哪裡 Mar 12, 2024 am 11:10 AM

我們都知道上面對我麼來說都是非常不錯的運動類型的軟體,可以實時的幫助用戶們完成各種運動都可以,而且我們在跑步的一些過程之中也能看到對於上面的一些軌跡都是可以多多的了解得到的,很多用戶們對於上面的一些功能資訊都不了解,所以今天小編就來給你好好的講解其中的一些內容體驗,讓大家們都可以更好的進行多方面的一些選擇,如果你也想知道對於自己跑步方面的一些軌跡和記錄的話,一定不要錯過,更多優質的內容都在等著你們來了解,超多有趣的攻略資訊都在等著你們,如果你們也喜歡想知道的話,現在就跟小編一起來看看吧。 

See all articles