LeetCode--39.組合總和

前引:明天就考最后一趟考試,最近考試周,我時時斷更,從明天開始,就會一直更新了,可以期待一下

解題思路:

? ? ? ? 1.獲取信息:

? ? ? ? ? ? ? ? 給定一個無重復的整數數組和一個目標值

? ? ? ? ? ? ? ? 從數組中選取任意數量的數字,使它們的和等于目標值,就是一組滿足條件的組合

? ? ? ? ? ? ? ? 要找出所有不同的組合,并按任意順序返回它們

? ? ? ? ? ? ? ? 注:同一個數字可以無限制重復被選取

? ? ? ? ? ? ? ?額外信息:1?<= candidates.length <= 30? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2 <=candidates[ i ] <= 40?

????????2.分析題目:

? ? ? ? ? ? ? ? 不同于之前類似的題目,這次,同一個數字可以無限制重復被選取,就需要你推陳出新了

? ? ? ? ? ? ? ? 由于可以選任意數量的數字為一組,所以,面對可能出現很多種情況的條件下

? ? ? ? ? ? ? ? 我打算使用回溯法,不了解回溯法,可以去看一下38題的題解,有詳細講解哦

? ? ? ? ? ? ? ? 這里你可以思考一下,回溯法該怎么實現,我會在最后一個環節借著代碼來講解我的思路的

? ? ? ? 3.示例查驗:

? ? ? ? ? ? ? ? 你可以檢驗一下自己的思路是否正確

? ? ? ? 4.嘗試編寫代碼:

? ? ? ? ? ? ? ? (1)回溯法

? ? ? ? ? ? ? ? ? ? ? ? 思路:每次從數組種選取一個數,進入下層遞歸,終止條件是滿足所有數字的和為目標值

? ? ? ? ? ? ? ? ? ? ? ? 其實我本來想詳細說說我的思路的,但是明天早上,我就要考試了,所以我打算長話短說,委屈你了,你可以看我的代碼及其注釋來進行理解哦

class Solution {
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {sort(candidates.begin(),candidates.end());//數組按從小到大的順序排列vector<vector<int>>res;//儲存結果的容器vector<int>path;//儲存每次選取的數字reBack(res,candidates,target,path,0);進入回溯return res;//返回結果}
private:void reBack(vector<vector<int>>&res,vector<int>&candidates,int les,vector<int>&path,int i){if(les==0){//如果選取的所有數字之和等于目標值res.push_back(path);return;}for(int j=i;j<candidates.size();j++){//每次選取數字if(candidates[j]>les)return;//剪枝,如果數字大于目標數的大小,就返回path.push_back(candidates[j]);//選取數字reBack(res,candidates,les-candidates[j],path,j);//進入下層遞歸path.pop_back();//移除選取的數字}}
};

? ? ? ? ? ? ? ? (2)優化哦

? ? ? ? ? ? ? ? ? ? ? ? 這次,不負眾望,帶來了優化及優化思路哦

? ? ? ? ? ? ? ? ? ? ? ? 優化思路:上面的方法,主要的浪費是在每次選取數字的時候,會進行比較多的無用操作,所以,有沒有辦法避免呢?

? ? ? ? ? ? ? ? ? ? ? ? 當然可以了,我們需要對原數組進行預先的處理,因為數組中的數字最大也就40,數組中的數字的數目最多也就30個

? ? ? ? ? ? ? ? ? ? ? ? 所以,你還是看我的代碼及注釋吧,最近我比較懶惰

class Solution {
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {vector<bool>cand(41,false);//對數組進行預處理for(int&c:candidates){cand[c]=true;}vector<int>path;//儲存選取的數字vector<vector<int>>res;//儲存結果的容器reBack(cand,path,res,target,2);//進入回溯return res;//返回結果}
private:void reBack(vector<bool>&cand,vector<int>&path,vector<vector<int>>&res,int les,int i){if(les==0){//如果選取的數字之和等于目標值res.push_back(path);return;}for(i;i<=les;i++){//數字選取的范圍,有效地進行了剪枝操作if(cand[i]){//如果該數字存在path.push_back(i);//選取該數字reBack(cand,path,res,les-i,i);path.pop_back();}}}
};

本次題解就到這里了,希望不掛科吧,每次發帖子感覺就像在跟一個讓我很舒服的人交流,這幾天沒有交流,反而感覺患得患失的,盡量每日一更,每天都來與你交流一下

還是提一嘴,紙上得來終覺淺,絕知此事要躬行哦

祝要考期末的,都不掛科,哈哈

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

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

相關文章

Visual Studio2022和C++opencv的配置保姆級教程

1.c桌面開發和windows平臺開發&#xff08;Visual Studio2022安裝時&#xff09; 2.下載OPenCV 3.系統屬性→添加環境變量→Path 4.VS2022配置opencv 5.項目→屬性→VC目錄中的包含目錄和庫目錄 5.項目→屬性→VC目錄中的包含目錄和庫目錄 包含 目錄添加&#xff1a; D:\…

使用Ansible的playbook安裝HTTP

實驗環境 安裝好ansible 一、準備測試服務&#xff08;192.168.10.41&#xff09; 1、安裝HTTP服務 dnf -y install httpd 2、啟動HTTP服務 systemctl start httpd 3、使用瀏覽器訪問 192.168.10.41 因為開啟了防火墻&#xff0c;所有無法訪問 4、開放防火墻的80端口 …

V少JS基礎班之第六彈

一、 前言 第六彈內容是閉包。 距離上次函數的發布已經過去了一個多月&#xff0c; 最近事情比較多&#xff0c;很少有時間去寫文章&#xff0c; 低質量還得保證所以本章放草稿箱一個月了&#xff0c;終于補齊了&#xff0c;其實還有很多細節要展開說明&#xff0c;想著拖太久…

【面板數據】全國高頻交易明細數據(2000-2024.7)

中國土地交易市場作為國家宏觀調控的重要組成部分&#xff0c;其通過市場機制&#xff0c;使土地使用權在不同主體間流轉&#xff0c;將土地資源配置給最具利用效率的部門或企業&#xff0c;提升土地利用率和經濟產出。中國土地高頻交易明細數據匯集了全國范圍內2000-2024年7月…

MongoDB 常用增刪改查方法及示例

MongoDB 的增刪改查&#xff08;CRUD&#xff09;操作是其核心功能&#xff0c;主要通過 mongo shell 或驅動&#xff08;如 Node.js、Python 等&#xff09;實現。以下是最常用操作的詳細說明及示例&#xff08;基于 mongo shell 語法&#xff09;。 ?一、插入操作&#xff…

moodle升級(4.5到5.0)

升級目標 由Moodle 4.5 (Build: 20241129) 升級到Moodle 5.0.1 (Build: 20250629) 參考教程&#xff1a;moodle升級&#xff08;詳細版&#xff09;-CSDN博客 操作平臺&#xff1a;寶塔 通過寶塔進行備份 備份文件 將/www/wwwroot/moodle 和/www/wwwroot/moodledata 復制…

基于Apache POI實現百度POI分類快速導入PostgreSQL數據庫實戰

## 引言:POI數據的價值與挑戰 POI(Point of Interest)數據作為地理信息系統的核心要素,在智慧城市、位置服務、商業分析等領域具有重要價值。百度POI數據包含了豐富的地點信息(如名稱、類別、坐標等),但如何高效處理這些數據并將其導入數據庫進行分析是開發者面臨的挑戰…

linux LAMP 3

[rootcode apache2]# bin/apachectl AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using fe80::20c:29ff:fe2a:708a. Set the ‘ServerName’ directive globally to suppress this message root192.168.235.5s password:┌─…

UI自動化-Selenium WebDriver

前言 Selenium WebDriver 是 Selenium 項目中最核心、最強大的組件&#xff0c;它是一個用于自動化控制網頁瀏覽器的開源 API&#xff08;應用程序編程接口&#xff09;。 簡單來說&#xff0c;Selenium WebDriver 就是一個允許你用編程語言&#xff08;如 Java、Python、C#、…

具身多模態大模型在感知與交互方面的綜述

引言在本學期方老師的《機器人與大模型》課上&#xff0c;我首次接觸到了關于具身智能的前沿知識&#xff0c;尤其作為課上交互組的成員&#xff0c;從表情識別到語音交互到機械狗的開發實踐進行了一些有意思的探索&#xff0c;使我在其中感受到了具身智能的巨大魅力和無限潛力…

UI 設計|審美積累 | 擬物化風格(Skeuomorphism)

擬物化是指把現實世界的材質、光影和結構帶到數字界面中。木紋、金屬、皮革、紙張等真實物體的質感&#xff0c;被細致地還原到屏幕上&#xff0c;讓用戶一眼就明白元素的意義與操作方式。它曾是iOS6之前移動端設計的主流風格&#xff0c;也一度被極簡風格取代&#xff0c;但在…

EventBridge精準之道:CloudTrail事件 vs. 服務原生事件,我該如何選?

當我們深入使用AWS EventBridge時&#xff0c;常常會發現一個有趣的現象&#xff1a;對于同一個操作&#xff08;比如啟動一個EC2實例&#xff09;&#xff0c;EventBridge中似乎會出現兩種事件。一種來自CloudTrail&#xff0c;記錄了API調用的行為&#xff1b;另一種則直接來…

【算法】動態規劃 斐波那契類型: 740. 刪除并獲得點數

740. 刪除并獲得點數 中等 題目 給你一個整數數組 nums &#xff0c;你可以對它進行一些操作。 每次操作中&#xff0c;選擇任意一個 nums[i] &#xff0c;刪除它并獲得 nums[i] 的點數。之后&#xff0c;你必須刪除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 開始你…

AWS MySQL 讀寫分離配置指南

# AWS JDBC Wrapper讀寫分離配置實戰&#xff1a;Spring Boot MyBatis Plus完整解決方案 ## 前言 在微服務架構中&#xff0c;數據庫讀寫分離是提升系統性能的重要手段。本文將詳細介紹如何在Spring Boot項目中使用AWS JDBC Wrapper實現自動讀寫分離&#xff0c;重點解決MyBat…

opencv檢測運動物體

檢測到的所有移動物體中輪廓中找到面積最大的輪廓&#xff0c;并繪制這個輪廓的矩形框。 #include <opencv2/opencv.hpp> #include <iostream>int main() {// 打開視頻文件或攝像頭cv::VideoCapture capture;capture.open("move3.mp4"); // 打開視頻文件…

Camera相機人臉識別系列專題分析之十五:人臉特征檢測FFD算法之libcvface_api.so算法API詳細注釋解析

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了: 這一篇我們開始講: Camera相機人臉識別系列專題分析之十五:人臉特征檢測FFD算法之libcvface_api.so算法API詳細注釋解析 目錄 一、libcvface_api.so算法API詳細注釋解析

圖像擦除論文-2:SmartEraser、Erase Diffusion、OmniEraser

圖像生成模型應用系列——圖像擦除&#xff1a; 圖像擦除論文-1&#xff1a;PixelHacker、PowerPanint等 圖像擦除論文-2&#xff1a;擦除類型數據集構建(1) Erase Diffusion Erase Diffusion: Empowering Object Removal Through Calibrating Diffusion Pathways https://git…

九識無人車陜西運營中心展廳啟幕 打造智能城配物流新標桿

7月1日&#xff0c;九識無人車陜西運營中心展廳正式開業&#xff0c;全國業務版圖再添重要一子。這座展廳是九識在陜西省的首家展廳&#xff0c;由九識第一位正式提車的客戶、首位代理商伙伴孫朋奇先生打造。展廳集產品展示與技術體驗于一體&#xff0c;成為西北地區城配領域自…

AI智能體|扣子(Coze)搭建【沉浸式歷史故事解說視頻】工作流

主包講解歷史對我們的好處&#xff0c;純個人觀點&#xff01; 這個世界是存在一些規律的&#xff0c;很多東西并不能夠通過自己的聰明去創新&#xff0c;去改變的。 無論你怎么樣創新&#xff0c;你都會回到哪個規律中去&#xff0c;比如很多人做一些商業模式的創新&#xff0…

Softhub軟件下載站實戰開發(十):實現圖片視頻上傳下載接口

文章目錄 Softhub軟件下載站實戰開發&#xff08;十&#xff09;&#xff1a;實現圖片視頻上傳下載接口 &#x1f5bc;?&#x1f3a5;系統架構圖核心功能設計 &#x1f6e0;?1. 文件上傳流程2. 關鍵技術實現2.1 雪花算法2.2 文件校驗機制 ?2.3 文件去重機制 &#x1f50d;2.…