【LeetCode刷題-回溯】-- 46.全排列

46.全排列

image-20231123210012089

方法:回溯法

一種通過探索所有可能的候選解來找出所有的解的算法,如果候選解被確認不是一個解,回溯法會通過在上一步進行一些變化拋棄該解,即回溯并且再次嘗試

使用一個標記數組表示已經填過的數

class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> res = new ArrayList<List<Integer>>();List<Integer> output = new ArrayList<Integer>();int n = nums.length;boolean[] visited = new boolean[n];backtrack(res,output,visited,nums);return res;}public void backtrack(List<List<Integer>> res,List<Integer> output,boolean[] visited,int[] nums){if(output.size() == nums.length){res.add(new ArrayList(output));return;}for(int i = 0;i<nums.length;i++){if(!visited[i]){output.add(nums[i]);visited[i]=true;backtrack(res,output,visited,nums);//退到上一狀態visited[i]=false;output.remove(output.size()-1);}}}}

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

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

相關文章

【前端】yarn介紹和使用

yarn介紹和使用 一、什么是yarn&#xff1f;二、安裝yarn三、yarn用法四、yarn更多用法 一、什么是yarn&#xff1f; yarn是快速、可靠、安全的依賴管理。 yarn官網&#xff1a;https://yarn.nodejs.cn/ Yarn 是代碼的包管理器。 它允許你與世界各地的其他開發者使用和共享&am…

如何設置實現本地JumpServer遠程訪問管理界面

文章目錄 前言1. 安裝Jump server2. 本地訪問jump server3. 安裝 cpolar內網穿透軟件4. 配置Jump server公網訪問地址5. 公網遠程訪問Jump server6. 固定Jump server公網地址 前言 JumpServer 是廣受歡迎的開源堡壘機&#xff0c;是符合 4A 規范的專業運維安全審計系統。JumpS…

C語言for循環結構經典練習

文章目錄 一、for循環基本知識二、經典例題及解析1.水仙花數2.求規定范圍內的完數3.求規定范圍內質數4.計算階乘之和5.計算55555555555555(類型)6.計算112123123412345(類型)7.判斷用戶輸入正整數的位數8.判斷某正整數是否為回文數9.九九乘法表10.統計用戶輸入的字符中&#xf…

PTA 公路村村通

現有村落間道路的統計數據表中&#xff0c;列出了有可能建設成標準公路的若干條道路的成本&#xff0c;求使每個村落都有公路連通所需要的最低成本。 輸入格式: 輸入數據包括城鎮數目正整數N&#xff08;≤1000&#xff09;和候選道路數目M&#xff08;≤3N&#xff09;&…

JVM 之 javac、java、javap 命令詳解

目錄 一. 前言 二. javac 命令 三. java 命令 四. javap 命令 一. 前言 在日常工作中&#xff0c;我們新建 Java工程&#xff0c;寫好代碼后&#xff0c;編譯和運行幾乎都是通過 IDE&#xff08;如idea、eclipse&#xff09;工具完成。但作為 Java開發者還是要了解下 Java虛…

Modbus RTU協議及modbus庫函數使用

一、與Modbus TCP的區別 在一般工業場景使用modbus RTU的場景還是更多一些&#xff0c;modbus RTU基于串行協議進行收發數據&#xff0c;包括RS232/485等工業總線協議。 與modbus TCP不同的是RTU沒有報文頭MBAP字段&#xff0c;但是在尾部增加了兩個CRC檢驗字節&#xff08;CRC…

Android之在RecyclerView列表中實現單選

一、實現效果 單選、可取消選中、列表數據可更新&#xff08;選擇狀態清空&#xff0c;可重新選擇&#xff09; RecyclerView列表單選 二、實現步驟 僅展示部分核心代碼&#xff0c;請主要參考適配器的定義 1、Item布局 selected_tip_list_item.xml文件 包含一個TextView和…

Spring Boot集成MyBatis實現多數據源訪問的“秘密”

文章目錄 為什么需要多數據源&#xff1f;Spring Boot集成MyBatis的基礎配置使用多數據源小結 &#x1f389;Spring Boot集成MyBatis實現多數據源訪問的“秘密” ☆* o(≧▽≦)o *☆嗨~我是IT陳寒&#x1f379;?博客主頁&#xff1a;IT陳寒的博客&#x1f388;該系列文章專欄&…

力扣:178. 分數排名(Python3)

題目&#xff1a; 表: Scores ---------------------- | Column Name | Type | ---------------------- | id | int | | score | decimal | ---------------------- 在 SQL 中&#xff0c;id 是該表的主鍵。 該表的每一行都包含了一場比賽的分數。Score …

TCP /UDP協議的 socket 調用的過程

在傳輸層有兩個主流的協議 TCP 和 UDP&#xff0c;socket 程序設計也是主要操作這兩個協議。這兩個協議的區別是什么呢&#xff1f;通常的答案是下面這樣的。 TCP 是面向連接的&#xff0c;UDP 是面向無連接的。TCP 提供可靠交付&#xff0c;無差錯、不丟失、不重復、并且按序…

Selenium介紹及基本使用方法

Selenium是一個開源、免費、簡單、靈活&#xff0c;對Web瀏覽器支持良好的自動化測試工具&#xff0c;在UI自動化、爬蟲等場景下是十分實用的&#xff0c;能夠熟練掌握并使用Selenium工具可以大大的提高效率。 Selenium簡介 Selenium支持多平臺、多瀏覽器、多語言去實現自動化…

深入理解強化學習——馬爾可夫決策過程:動作價值函數

分類目錄&#xff1a;《深入理解強化學習》總目錄 不同于馬爾可夫獎勵過程&#xff0c;在馬爾可夫決策過程中&#xff0c;由于動作的存在&#xff0c;我們額外定義一個動作價值函數&#xff08;Action-value Function&#xff09;。我們用 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)…

線程提交線程到線程池,有幾種方式,哪一種方式是工作中不能使用的,無法捕捉異常,線程池的拒絕策略,線程池的提交方式

線程池的工作原理 JDK中提交線程到線程池&#xff0c;有幾種方式&#xff0c;哪一種方式是工作中不能使用的&#xff0c;無法捕捉異常 兩種提交任務的方法 ExecutorService 提供了兩種提交任務的方法&#xff1a; execute()&#xff1a;提交不需要返回值的任務 submit()&a…

【C語言】多組輸入

C系列文章目錄 目錄 C系列文章目錄 一、什么是多組輸入&#xff1f; 二、如何使用多組輸入 2.1&#xff0c;試題舉例講解 2.2&#xff0c;錯誤解法 2.3&#xff0c;我們實現多組輸入的思路 2.4&#xff0c;第一種正確的解法 2.5&#xff0c;第二種正確的解法 2.6&…

Python入門教程 | Python3 字典(dict)

Python3 字典 字典是另一種可變容器模型&#xff0c;且可存儲任意類型對象。 Python3中的字典是一種無序、可變、可迭代的數據結構&#xff0c;它由鍵&#xff08;key&#xff09;和對應的值&#xff08;value&#xff09;組成。字典在Python中被視為可變對象&#xff0c;這意…

ES ElasticSearch安裝、可視化工具kibana安裝

1、安裝ES docker run -d --name es9200 -e "discovery.typesingle-node" -p 9200:9200 elasticsearch:7.12.1訪問測試&#xff1a; http://域名:9200/ 2、安裝kibana對es進行可視化操作 執行命令 docker run -d --name kibana5601 -p 5601:5601 kibana:7.1.12.修…

如何實現在公網下使用navicat圖形化工具遠程連接本地內網的MariaDB數據庫

公網遠程連接MariaDB數據庫【cpolar內網穿透】 文章目錄 公網遠程連接MariaDB數據庫【cpolar內網穿透】1. 配置MariaDB數據庫1.1 安裝MariaDB數據庫1.2 測試局域網內遠程連接 2. 內網穿透2.1 創建隧道映射2.2 測試隨機地址公網遠程訪問3. 配置固定TCP端口地址3.1 保留一個固定的…

Redis深入理解-Socket連接建立流程以及文件事件處理機制

Redis Server 運行原理圖 Redis 服務器中 Socket 網絡建立以及文件事件模型 一個 redis 單機&#xff0c;可以抗幾百上千的并發&#xff0c;這里的并發指的就是同時可以有幾百個 client 對這個 redis server 發起請求&#xff0c;都需要去建立網絡連接&#xff0c;同時間可能會…

利用 docker 實現JMeter分布式壓測

為什么需要分布式&#xff1f; 在工作中經常需要對一些關鍵接口做高QPS的壓測&#xff0c;JMeter是由Java 語言開發&#xff0c;沒創建一個線程&#xff08;虛擬用戶&#xff09;&#xff0c;JVM默認會為每個線程分配1M的堆棧內存空間。受限于單臺試壓機的配置很難實現太高的并…

YAML 深入解析:從語法到最佳實踐

什么是YAML YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一種人類可讀的數據序列化語言。它的設計目標是使數據在不同編程語言之間交換和共享變得簡單。YAML采用了一種簡潔、直觀的語法&#xff0c;以易于閱讀和編寫的方式表示數據結構。 YAML廣泛應用于配置文…