算法-js-子集

題:給你一個整數數組 nums ,數組中的元素 互不相同 。返回該數組所有可能的子集(冪集)。解集 不能 包含重復的子集。你可以按 任意順序 返回解集。

方法一:迭代法
核心邏輯:動態擴展子集, 小規模數據(n ≤ 20)推薦

const subsets = (nums) => {const result = [[]];for (const num of nums) {const n = result.length;for (let i = 0; i < n; i++) {result.push([...result[i], num]);}}return result;
};

方法二:回溯法(DFS+剪枝)
核心邏輯:通過深度優先搜索遍歷所有決策路徑

const subsets = (nums) => {const result = [];const backtrack = (start, path) => {result.push([...path]); // 記錄當前路徑for (let i = start; i < nums.length; i++) {path.push(nums[i]);    // 選擇當前元素backtrack(i + 1, path); // 遞歸下一層path.pop();           // 撤銷選擇(回溯)}};backtrack(0, []);return result;
};

方法三:遞歸分治法
核心邏輯:基于數學歸納法遞推生成子集

const subsets = (nums) => {if (nums.length === 0) return [[]];const last = nums.pop();const prevSubsets = subsets(nums); // 遞歸獲取前n-1元素的子集const newSubsets = prevSubsets.map(sub => [...sub, last]); return [...prevSubsets, ...newSubsets]; // 合并新舊子集
};

時間復雜度均為O(n*2^n)

場景選擇建議
競速場景:優先選擇迭代法(代碼最簡)
復雜變體:使用回溯法(方便添加剪枝條件,如子集大小限制)
理論研究:遞歸法(便于數學證明)

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

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

相關文章

python里的NumPy算法

NumPy&#xff08;Numerical Python&#xff09;是 Python 中用于科學計算的基礎庫&#xff0c;提供了高性能的多維數組對象、矩陣運算以及大量數學函數庫。其核心優勢在于通過向量化操作替代傳統循環&#xff0c;大幅提升計算效率&#xff0c;尤其適合處理大規模數據的算法實現…

HarmonyOS優化應用文件上傳下載慢問題性能優化

一、概述 在開發應用時&#xff0c;客戶端與服務器之間數據交換的效率取決于文件傳輸的性能。一個數據交換性能較低的應用會導致其在加載過程中耗費較長時間&#xff0c;在很多的場景造成頁面卡頓&#xff0c;極大的影響了用戶體驗。相反&#xff0c;一個數據交換高效的應用&a…

64、【OS】【Nuttx】任務休眠與喚醒:clock_nanosleep

背景 之前的 blog 63、【OS】【Nuttx】任務休眠與喚醒&#xff1a;sleep 分析了任務休眠中的 sleep 函數&#xff0c;下面繼續來分析下 sleep 函數中的核心功能 clock_nanosleep clock_nanosleep usleep 上篇 blog 分析了 sleep 函數&#xff0c;其核心功能封裝到了 clock_…

【生產實踐】華為存儲XSG1在RHEL 7.x/8.x上的多路徑配置操作手冊(生產環境)

一、概述 本手冊針對Red Hat Enterprise Linux 7.x/8.x系統與華為XSG1存儲設備的多路徑I/O&#xff08;MPIO&#xff09;配置&#xff0c;通過優化路徑策略實現高可用、負載均衡及故障容錯&#xff0c;適配華為存儲硬件特性&#xff0c;滿足生產環境需求。 二、參數解析與配置…

Unity開發之Webgl自動更新程序包

之前讓客戶端更新webgl程序是在程序里寫版本號然后和服務器對比&#xff0c;不同就調用 window.location.reload(true);之前做的客戶端都是給企業用&#xff0c;用戶數少看不出來啥問題。后來自己開發一個小網站&#xff0c;用戶數量還是挺多&#xff0c;然后就會遇到各種各樣的…

一個開源腳本,可自動安裝在 AMD Radeon 7900XTX 上運行選定 AI 接口所需的所有內容

?一、軟件介紹 文末提供程序和源碼下載 一個開源腳本&#xff0c;可自動安裝在 AMD Radeon 7900XTX 上運行選定 AI 接口所需的所有內容。 二、ROCm-AI-Installer ROCm-AI-安裝程序 一個開源腳本&#xff0c;可自動安裝在 AMD Radeon 7900XTX 上運行選定 AI 接口所需的所有內…

【Axure結合Echarts繪制圖表】

1.繪制一個矩形&#xff0c;用于之后存放圖表&#xff0c;將其命名為test&#xff1a; 2.新建交互 -> 載入時 -> 打開鏈接&#xff1a; 3.鏈接到URL或文件路徑&#xff1a; 4.點擊fx&#xff1a; 5.輸入&#xff1a; javascript: var script document.createEleme…

Relooking:損失權重λ 、梯度權重α、學習率η

一般多任務&#xff0c;大家都喜歡疊加很多損失&#xff0c;由此產生很多損失權重系數。此外&#xff0c;有的學者直接對梯度進行操作。咋一看&#xff0c;上面三個系數貌似重復多余&#xff0c;直接用其中一個系數代替不行嗎&#xff1f;為此&#xff0c;回顧了下神經網絡的前…

數學復習筆記 20

復習方程組&#xff0c;還有隨便復習一下高數和矩陣&#xff0c;向量。現在是復習高數的導數這一章。兩個曲線相切&#xff0c;列出方程&#xff0c;然后解出參數&#xff0c;沒有任何難度呢。算切線方程&#xff0c;就是&#xff0c;算導數&#xff0c;導數就用導數定義&#…

Sqlalchemy 連mssql坑

連接失敗: (pyodbc.OperationalError) (08001, [08001] [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:0A00014D:SSL routines::legacy sigalg disallowed or unsupported] (-1) (SQLDriverConnect)) (Background on this error at: https://sqlalche.me/e/…

AI大模型學習三十、ubuntu安裝comfyui,安裝插件,修改返回405 bug,值得一看喔

一、說明 ComfyUI是一個開源的、基于節點的Web應用。它允許用戶根據一系列文本提示&#xff08;Prompt&#xff09;生成圖像。 ComfyUI使用擴散模型作為基礎模型&#xff0c;并結合 ControlNet、Lora和LCM低階自適應等模型&#xff0c;每個工具都由程序中的一個節點表示 二、開…

MySQL(40)如何使用DROP TABLE刪除表?

DROP TABLE 語句用于從數據庫中永久刪除一個表及其所有數據。執行該語句后&#xff0c;表結構和數據都將被徹底刪除&#xff0c;且無法恢復。因此&#xff0c;在執行 DROP TABLE 操作之前&#xff0c;請確保已備份好相關數據。 基本語法 DROP TABLE table_name;如果要刪除多個…

element ui 表格 勾選復選框后點擊分頁不保存之前的數據問題

element ui 表格 勾選復選框后點擊分頁不保存之前的數據問題 給 el-table上加 :row-key"getRowKey"給type“selection” 上加 :reserve-selection"true"

vite常見面試問題

一、Vite 核心原理 1. Vite 為什么比 Webpack 快? 答案: Vite 的核心優勢在于開發環境和生產環境的雙重優化: 開發環境: 基于原生 ESM(ES Modules):瀏覽器直接加載 ES 模塊,無需打包,啟動時間極短(毫秒級)。按需編譯:僅編譯當前頁面所需的模塊,而非整個項目。預…

Screen 連接遠程服務器(Ubuntu)

連接 1. 安裝screen 默認預安裝&#xff0c;可以通過命令查看&#xff1a; screen --version 若未安裝&#xff1a; # Ubuntu/Debian sudo apt-get install screen 2. 本機連接遠程服務器 ssh root192.168.x.x 在遠程服務器中打開screen&#xff1a; screen -S <nam…

Flutter GridView網格組件

目錄 常用屬性 GridView使用配置 GridView.count使用 GridView.extent使用 GridView.count Container 實現列表 GridView.extent Container 實現列表 GridView.builder使用 GridView網格布局在實際項目中用的也是非常多的&#xff0c;當我們想讓可以滾動的元素使用矩陣…

Jenkins實踐(8):服務器A通過SSH調用服務器B執行Python自動化腳本

Jenkins實踐(8):服務器A通過SSH調用服務器B執行Python自動化腳本 1、需求: 1、Jenkins服務器在74上,Python腳本在196服務器上 2、需要在服務器74的Jenkins上調用196上的腳本執行Python自動化測試 2、操作步驟 第一步:Linux Centos7配置SSH免密登錄 Linux Centos7配置S…

C#二維碼:利用 ThoughtWorks.QRCode 庫實現二維碼生成與解析

C#二維碼&#xff1a;利用 ThoughtWorks.QRCode 庫實現二維碼生成與解析 在當今數字化信息交互頻繁的時代&#xff0c;二維碼憑借其信息容量大、容錯能力強、易識別等特點&#xff0c;廣泛應用于各個領域。從移動支付、產品溯源到活動簽到&#xff0c;二維碼無處不在。在 C# 開…

【Java Web】速通JavaScript

參考筆記:JavaWeb 速通JavaScript_javascript 速通-CSDN博客 目錄 一、JavaScript快速入門 1. 基本介紹 2. JavaScript特點 3. JavaScript的引入方式(重要) 3.1 寫在script標簽中 ?????3.2 以外部文件方式引入 二、JS的數據類型 1. 變量 2. 常用數據類型 3.特殊值 三、…

Python打卡訓練營-Day13-不平衡數據的處理

浙大疏錦行 知識點&#xff1a; 不平衡數據集的處理策略&#xff1a;過采樣、修改權重、修改閾值交叉驗證代碼 過采樣 過采樣一般包含2種做法&#xff1a;隨機采樣和SMOTE 過采樣是把少的類別補充和多的類別一樣多&#xff0c;欠采樣是把多的類別減少和少的類別一樣 一般都是缺…