【回溯】總結

1、 組合和子集問題

組合問題需要滿足一定要求才算作一個答案,比如數量要求(k個數),累加和要求(=target)。
子集問題是只要構成一個新的子集就算作一個答案。

進階:去重邏輯。

  1. 一般都是要對同層去重。比如[1,1,2,2,2]
    放置第一個位置的數時,如果已經使用過第一個1了,那么他的所有組合和子集一定包含第二個1,所以去重邏輯就是同層不能出現相同的數
  • 對于一個順序數組,通常直接與前一個數比較即可。
for i in range(index+1, n):if i==index+1 or nums[i]!=nums[i-1]:dfs(i,[],target)
  • 對于一個亂序數組,則需要用哈希表存儲同層出現過的數。
hash = set()
for i in range(index+1, n):if i==index+1 or (nums[i] not in hash):hash.add(nums[i])dfs(i, [])
  1. 實際上上面的兩段代碼還蘊含了另一個去重,即不同層不能用同一個下標的數,所以這里索引時是從index+1開始

2、分割問題

我們定義[start:end] **(左閉右閉)**這段區間為分割出來的子串,對他進行條件判斷。在python中對應的是s[start: end+1],end指向某個字符后面,表示切割到這個字符。start則為上一步的end+1。可以看下面這幅圖,比較直觀。理解了怎么分割字符串,剩下的就套回溯的模板就可以了。
在這里插入圖片描述

    def partition(self, s: str) -> List[List[str]]:n = len(s)res = []def ishuiwen(s):return s==s[::-1]def dfs(start,end,stack):ss = s[start:end+1]if not ishuiwen(ss):returnstack.append(ss)if end == n-1:res.append(stack.copy())return for i in range(end+1,n):dfs(end+1, i, stack.copy())for i in range(n):dfs(0, i, [])return res

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40820.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40820.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 5種網絡IO模型

Linux IO模型 網絡IO的本質是socket的讀取,socket在linux系統被抽象為流,IO可以理解為對流的操作。剛才說了,對于一次IO訪問(以read舉例),數據會先被拷貝到操作系統內核的緩沖區中,然后才會從操…

LL庫實現SPI MDA發送方式驅動WS2812

1,首先打卡STM32CubeMX,配置一下工程,這里使用的芯片是STM32F030F4P6。 時鐘 SPI外設 SPI DMA 下載接口,這個不配置待會下程序后第二次就不好下載調試了。 工程配置,沒啥說的 選擇生成所有文件 將驅動都改為LL庫 然后直…

OpenCV之特征點匹配

特征點選取 特征點探測方法有goodFeaturesToTrack(),cornerHarris()和SURF()。一般使用goodFeaturesToTrack()就能獲得很好的特征點。goodFeaturesToTrack()定義: void goodFeaturesToTrack( InputArray image, OutputArray corners,int maxCorners, double qualit…

jmeter errstr :“unsupported field type for multipart.FileHeader“

在使用jmeter測試接口的時候,提示errstr :"unsupported field type for multipart.FileHeader"如圖所示 這是因為我們 在HTTP信息頭管理加content-type參數有問題 直接在HTTP請求中,勾選: use multipart/form-data for POST【中文…

22、touchGFX學習Model-View-Presenter設計模式

touchGFX采用MVP架構,如下所示: 本文界面如下所示: 本文將實現兩個操作: 1、觸摸屏點擊開關按鍵實現打印開關顯示信息,模擬開關燈效果 2、板載案按鍵控制觸摸屏LED燈的顯示和隱藏 一、觸摸屏點擊開關按鍵實現打印開…

Go語言之依賴管理

go module go module是Go1.11版本之后官方推出的版本管理工具,并且從Go1.13版本開始,go module將是Go語言默認的依賴管理工具。 GO111MODULE 要啟用go module支持首先要設置環境變量GO111MODULE 通過它可以開啟或關閉模塊支持,它有三個可選…

docker搭建LNMP

docker安裝 略 下載鏡像 nginx:最新版php-fpm:根據自己需求而定mysql:根據自己需求定 以下是我搭建LNMP使用的鏡像版本 rootVM-12-16-ubuntu:/docker/lnmp/php/etc# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.0…

Linux的基本權限(文件,目錄)

文章目錄 前言一、Linux權限的概念二、Linux權限管理 1.文件訪問者分類2.文件類型和訪問類型3.文件訪問權限的相關設置方法三、目錄的權限四、權限的總結 前言 Linux下一切皆文件,指令的本質就是可執行文件,直接安裝到了系統的某種路徑下 一、Linux權限的…

embed mongodb 集成spring

在property文件下添加 de.flapdoodle.mongodb.embedded.version5.0.5 spring.mongodb.embedded.storage.oplog-size0不指定數據庫,會使用test, port默認是0,隨機端口號。 oplog-size mac默認是192mb, 其他系統會使用5%的磁盤可用空間&#x…

SpringCloud實用篇6——elasticsearch搜索功能

目錄 1 DSL查詢文檔1.1 DSL查詢分類1.2 全文檢索查詢1.2.1 使用場景1.2.2 基本語法1.2.3 示例1.2.4 總結 1.3 精準查詢1.3.1 term查詢1.3.2 range查詢1.3.3 總結 1.4.地理坐標查詢1.4.1 矩形范圍查詢1.4.2 附近查詢 1.5 復合查詢1.5.1 相關性算分1.5.2 算分函數查詢1&#xff0…

Python 字節碼指令 LOAD_DEREF

LOAD_DEREF 是 Python 字節碼指令,它與閉包和嵌套函數有關。要理解 LOAD_DEREF,我們首先需要了解 Python 中的幾個概念:cell、free variable 和閉包。 Cell 和 Free Variables: 當一個嵌套函數引用了其上級作用域中的一個變量,但該…

【大數據Hive】hive 事務表使用詳解

目錄 一、前言 二、Hive事務背景知識 hive事務實現原理 hive事務原理之 —— delta文件夾命名格式 _orc_acid_version 說明 bucket_00000 合并器(Compactor) 二、Hive事務使用限制 參數設置 客戶端參數設置 客戶端參數設置 三、Hive事務使用操作演示 操作步驟 客…

(已解決)redis.get報錯com.alibaba.fastjson.JSONException: autoType is not support

redis存取值問題,存自定義實體對象; 第一次取的時候報錯:com.alibaba.fastjson.JSONException: autoType is not support。 GenericFastJsonRedisSerializer序列化和反序列化redis的value值,需要bean對象含有無參構造方法。 解決…

【C語言】回調函數,qsort排序函數的使用和自己實現,超詳解

文章目錄 前言一、回調函數是什么二、回調函數的使用1.使用標準庫中的qsort函數2.利用qsort函數對結構體數組進行排序 三、實現qsort函數總結 先記錄一下訪問量突破2000啦,謝謝大家支持!!! 這里是上期指針進階鏈接,方便…

金融術語總結

洗錢 將犯罪或其他非法違法行為所獲得的違法收入,通過各種手段掩飾、隱瞞、轉化,使其在形式上合法化的行為。 存量客戶 某個時間段里原先已有的客戶,與新增客戶相對應。 月活躍用戶數量,MAU(Monthly Active User,M…

【go語言基礎】go中的方法

先思考一個問題,什么是方法,什么是函數? 方法是從屬于某個結構體或者非結構體的。在func這個關鍵字和方法名中間加了一個特殊的接收器類型,這個接收器可以是結構體類型的或者是非結構體類型的。從屬的結構體獲取該方法。 函數則…

【100天精通python】Day37:GUI界面編程_PyQT從入門到實戰(上)

目錄 專欄導讀 1 PyQt6 簡介: 1.1 安裝 PyQt6 和相關工具: 1.2 PyQt6 基礎知識: 1.2.1 Qt 的基本概念和組件: 1.2.2 創建和使用 Qt 窗口、標簽、按鈕等基本組件 1.2.3 布局管理器:垂直布局、水平布局、網格布局…

typedef函數代碼段解釋以及部分Windows下的系統函數

文章目錄 1、typedef int (WINAPI* LPSDOLInitialize)(const SDOLAppInfo* pAppInfo)2、typedef int (WINAPI* LPSDOLGetModule)(REFIID riid, void** intf)3、typedef int (WINAPI* LPSDOLTerminal)();4、GetProcAddress運行時獲取一個動態鏈接庫(DLL)中…

mysql與redis區別

mysql和redis的數據庫類型 mysql是關系型數據庫,主要用于存放持久化數據,將數據存儲在硬盤中,讀取速度較慢。 redis是NOSQL,即非關系型數據庫,也是緩存數據庫,即將數據存儲在緩存中,緩存的讀取速…

網絡

mcq Java 傳輸層:拆分和組裝,完成端到端的消息傳遞,流量控制,差錯控制等 網絡層: 尋址、路由,復用,擁塞控制,完成源到宿的傳遞。 顯然A選項是錯誤的,有流量控制的是傳輸層…