LeetCode--46.全排列

解題思路:

? ? ? ? 1.獲取信息:

? ? ? ? ? ? ? ? 給定一個不含重復數字的數組,返回所有可能的全排列,可以按任意順序返回

? ? ? ? ? ? ? ? 提示信息:1 <= nums.length <= 6

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??-10 <= nums[i] <= 10

? ? ? ? 2.分析題目:

? ? ? ? ? ? ? ? 要獲取到所有可能的全排列

? ? ? ? ? ? ? ? 我們每次會從數組中取出一個數來作為一種排列的成員,直到取出過所有的數,那么就形成了一種排列

? ? ? ? ? ? ? ? 而取下一個數又要依據前面取的數,防止取到相同的數,造成重復

? ? ? ? ? ? ? ? 所以實際上的過程就是如下,以nums= [1,2,3]為例

? ? ? ? ? ? ? ? 第一次取數:

? ? ? ? ? ? ? ? res=[ [1], [2], [3] ]

? ? ? ? ? ? ? ? 第二次取數要依據前面取的數來取,我們就依次取出res中的元素:

? ? ? ? ? ? ? ? [1]:

? ? ? ? ? ? ? ? [1, 2],[1, 3]

? ? ? ? ? ? ? ? [2]:

? ? ? ? ? ? ? ? [2, 1],[2, 3]

? ? ? ? ? ? ? ? [3]:

? ? ? ? ? ? ? ? [3, 1],[3, 2]

? ? ? ? ? ? ? ? 第三次取數:

? ? ? ? ? ? ? ? [1, 2]:

? ? ? ? ? ? ? ? 等等,依次類推,我就不寫完了,差不多看到這里應該就懂得我的思路了

? ? ? ? 3.示例查驗:

? ? ? ? ? ? ? ? 示例1:可以用來檢驗思路是否正確

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

? ? ? ? ? ? ? ? (1)暴力法:(我覺得我的方法挺暴力的,所以就取了這個名字)

? ? ? ? ? ? ? ? ? ? ? ? 思路:跟上面所說的思路基本一致,只不過我加入了防止取到重復的數的步驟,并且使用了遞歸

? ? ? ? ? ? ? ? ? ? ? ? 防止取到重復的數的步驟,思路來源于提示信息,我們知道每個數的范圍在一個較小的范圍,我們就可以用數組來模擬哈希表進行查重的操作,具體可以看下面代碼

class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>>res;//儲存結果vector<bool>tab(21,true);//查重操作vector<int>path;//每一種排列GetRes(res,tab,nums,path);//遞歸return res;//返回結果}
private:void GetRes(vector<vector<int>>&res,vector<bool>&tab,vector<int>&nums,vector<int>&path){if(path.size()==nums.size()){//如果一種排列中的元素的數目等于數組中元素的數目res.push_back(path);return;}for(int i=0;i<nums.size();i++){if(tab[nums[i]+10]){//如果該元素不存在這種排列中path.push_back(nums[i]);tab[nums[i]+10]=false;GetRes(res,tab,nums,path);path.pop_back();tab[nums[i]+10]=true;}}}
};

今天的題解也完成了,就這樣吧

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

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

相關文章

云徙科技----一面(全棧開發)

一、公司是做什么業務的&#xff1f;二、介紹一下自己會用的&#xff0c;熟悉的技術棧&#xff1f;三、“在 Spring 應用中&#xff0c;當你發起一個 RESTful API 請求時&#xff08;例如 GET /api/users/1&#xff09;&#xff0c;計算機系統是如何知道這個請求的&#xff1f;…

我是怎么設計一個訂單號生成策略的(庫存系統)

我是怎么設計一個訂單號生成策略的&#xff08;庫存系統&#xff09;一、背景 最近我在做一套自研的庫存管理系統&#xff0c;其中有一個看似簡單、實則很關鍵的功能&#xff1a;訂單號生成策略。 訂單號不僅要全局唯一&#xff0c;還要有一定的可讀性和業務含義&#xff0c;比…

問津集 #1:Rethinking The Compaction Policies in LSM-trees

文章目錄引言正文結束語引言 陪女朋友出門&#xff0c;我大概有兩個小時左右的空閑時間&#xff0c;遂帶上電腦&#xff0c;翻了下論文列表&#xff0c;選擇了這篇文章做一個簡讀。 因為這一年負責時序系統的存儲引擎和計算引擎演進&#xff0c;而Compaction又是串聯讀寫的核心…

數據產品結構:從數據接入到可視化的完整架構指南

在數據驅動決策的時代&#xff0c;一套高效的數據產品結構是企業挖掘數據價值的基礎。無論是巨頭企業自建的完整體系&#xff0c;還是中小企業依賴的第三方工具&#xff0c;其核心邏輯都是實現 “數據從產生到呈現” 的全鏈路管理。本文將拆解數據產品的五層架構&#xff0c;對…

python學智能算法(二十三)|SVM-幾何距離

引言 前序學習文章中&#xff0c;已經探究了電荷超平面的距離計算方法&#xff0c;相關文章為點與超平面的距離。 在這片文章中&#xff0c;我們了解到計算距離的公式&#xff1a; Fmin?i1...myi(w?xib)F\min_{i1...m}y_{i}(w\cdot x_{i}b)Fi1...mmin?yi?(w?xi?b) 計算…

[每日隨題11] 貪心 - 數學 - 區間DP

整體概述 難度&#xff1a;1000 →\rightarrow→ 1400 →\rightarrow→ 1600 P3918 [國家集訓隊] 特技飛行 標簽&#xff1a;貪心 前置知識&#xff1a;無 難度&#xff1a;橙 1000 題目描述&#xff1a; 輸入格式&#xff1a; 輸出格式&#xff1a; 樣例輸入&#xff1a;…

Elasticsearch 9.x 搜索執行流程(源碼解讀)

1. 搜索執行流程概述 Elasticsearch的搜索執行是一個分布式過程,涉及協調節點和數據節點之間的多階段交互 #mermaid-svg-QGh2GjrUKcs5jzQp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QGh2GjrUKcs5jzQp .error…

暑期訓練8

E. G-C-D, Unlucky!題目要求判斷是否存在一個長度為 n 的數組 a&#xff0c;使得p[i] 是 a[0..i] 的前綴 GCDs[i] 是 a[i..n-1] 的后綴 GCD思路前綴 GCD 非遞增后綴 GCD 非遞減首尾 GCD 一致橋梁條件成立對于每個位置 i&#xff0c;gcd(p[i], s[i1]) 必須等于整個數組的 GCD&am…

深入解析Hadoop HDFS高可用性:原理、故障切換與元數據同步

Hadoop HDFS高可用性(HA)概述在分布式存儲領域&#xff0c;Hadoop分布式文件系統(HDFS)作為Hadoop生態系統的核心存儲組件&#xff0c;其高可用性(HA)設計一直是架構師們關注的焦點。傳統HDFS架構中&#xff0c;NameNode作為單一主節點管理整個文件系統的元數據&#xff0c;這種…

Freertos源碼分析:任務創建/刪除

任務創建/刪除流程1.簡介FreeRTOS 中任務創建通過 xTaskCreate() 或 xTaskCreateStatic() 實現。動態創建&#xff08;xTaskCreate&#xff09;會自動分配任務棧和TCB&#xff08;任務控制塊&#xff09;&#xff0c;靜態創建&#xff08;xTaskCreateStatic&#xff09;需用戶預…

warning: _close is not implemented and will always fail

相關問題&#xff1a; 一、undefined reference to _exit undefined reference to ‘end‘ warning: _close is not implemented and will always fail 一、環境&#xff1a; ubuntu24.04實體機、 arm-none-eabi-gcc gcc version 13.2.1 20231009 (15:13.2.rel1-2) 二…

MyBatis之緩存機制詳解

MyBatis之緩存機制詳解一、MyBatis緩存的基本概念1.1 緩存的核心價值1.2 MyBatis的兩級緩存體系二、一級緩存&#xff08;SqlSession級別緩存&#xff09;2.1 工作原理2.2 實戰案例&#xff1a;一級緩存演示2.2.1 基礎用法&#xff08;默認開啟&#xff09;2.2.2 一級緩存失效場…

云服務器搭建自己的FRP服務。為什么客戶端的項目需要用Docker啟動,服務端才能夠訪問到?

簡單回答&#xff1a;在云服務器搭建FRP服務時&#xff0c;客戶端項目用Docker啟動并非必需&#xff0c;而是因為Docker的特性簡化了配置&#xff1a; Docker通過端口映射&#xff08;如-p 本地端口:容器端口&#xff09;能固定項目對外暴露的端口&#xff0c;減少本地端口沖突…

6 STM32單片機的智能家居安防系統設計(STM32代碼+手機APP設計+PCB設計+Proteus仿真)

系列文章目錄 文章目錄 系列文章目錄前言1 資料獲取與演示視頻1.1 資料介紹1.2 資料獲取1.3 演示視頻 2 系統框架3 硬件3.1 主控制器3.2 顯示屏3.3 WIFI模塊3.4 DHT11溫濕度傳感器3.5 煙霧/燃氣傳感器模塊&#xff1a;MQ-23.6 火焰傳感器3.7 門磁模塊MC-38 4 設計PCB4.1 安裝下…

DevOps落地的終極實踐:8大關鍵路徑揭秘!

本文來自騰訊藍鯨智云社區用戶: CanWay當前&#xff0c;DevOps因其能夠降低IT運營成本、提高軟件質量并加快上市時間的能力而在全球范圍內引起廣泛關注。它打破了傳統軟件開發與運營的界限&#xff0c;消除了新功能發布延遲和軟件質量下降的障礙。DevOps通過實施持續集成、持續…

react - 根據路由生成菜單

后端返回菜單的格式menuList:[{index: true,name: "",component: "../views/Home",meta: { title: "首頁", requiresAuth: true,roles:[user]},},{path: "/admin",name: "admin",meta: { title: "管理頁", roles:…

Window延遲更新10000天配置方案

1.點擊"開始"菜單&#xff0c;搜索"注冊表編輯器"&#xff0c;點擊"打開"。2.找到"\HKEY LOCAL MACHINE\SOFTWARE\Microsoft\WindowsUpdate\Ux\Settings"路徑。3.右面空白處右鍵新建一個32位值&#xff0c;命名為FlightSettingsMaxPau…

【OD機試】人民幣轉換

題目描述 將阿拉伯數字金額轉換為中文大寫金額格式,需遵循以下規則: 1、 前綴要求:中文大寫金額前必須標明“人民幣”字樣。 2、 用字規范:使用壹、貳、叁、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億、元、角、分、零、整等字樣。 3、 “整”字規則: 金額到“元”為止…

在ajax中什么時候需要將返回值類型做轉換

$.ajax({url: TMSPROC0050/deleteData?accidentIds accidentIds.join(,),type: DELETE,dataType: json,success: function(result) {$(#accidentGrid).datagrid(reload);$.messager.show({title: 成功,msg: result.message})},error: function(result) {$.messager.alert({ti…

Helm常用命令大全(2025最新版)

文章目錄Helm常用命令大全&#xff08;2025最新版&#xff09;一、基礎命令與環境配置版本與幫助信息安裝與升級HelmLinux系統安裝版本升級注意事項二、倉庫管理命令倉庫基礎操作OCI倉庫支持&#xff08;v3.8新特性&#xff09;三、Chart操作命令Chart創建與打包Chart搜索與下載…