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

47.全排列II

image-20231123212505445

主要需要解決全排列不重復的問題,設定一個規則,保證在填第i個數的時候重復數字只會被填入一次即可,而在本題中,我們選擇對原數組排序,保證相同的數字都相鄰,然后每次填入的數一定是這個數所在重復數集合中「從左往右第一個未被填過的數字」

class Solution {public List<List<Integer>> permuteUnique(int[] nums) {List<List<Integer>> res = new ArrayList<List<Integer>>();List<Integer> tmp = new ArrayList<Integer>();int n = nums.length;boolean[] visites = new boolean[n];Arrays.sort(nums);backtrack(res,tmp,visites,nums);return res;}public void backtrack(List<List<Integer>> res,List<Integer> tmp,boolean[] visites,int[] nums){if(tmp.size() == nums.length){res.add(new ArrayList(tmp));return;}for(int i = 0; i < nums.length; i++){ //由于會有重復,保證在填第i個數的時候重復數組只會被填入一次即可//選擇對原數字排序,保證相同的數字都相鄰,然后每次填入的數一定是這個數所在重復數集合中從左往后第一個未被填過的數字//!visites[i-1]限制兩個相鄰的重復數字的訪問順序//比如[1,1,2]保證左邊的1永遠比右邊的1先使用/* vis[i]:當前數字是否出現過* 如果當前數字與前一個數字相同(nums[i] == nums[i - 1]),* 并且前一個數字還沒有出現的話(vis[i - 1] == false),* 那么就不能選擇當前數字(continue),* 如果前面的數字已經出現過(vis[i] == true),則可以* 選擇當前數字*/if(visites[i] || ( i>0 && nums[i] == nums[i -1] && !visites[i-1])){continue;}tmp.add(nums[i]);visites[i] = true;backtrack(res,tmp,visites,nums);tmp.remove(tmp.size()-1);visites[i]=false;}}
}

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

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

相關文章

綜合運用DML、DDL、DCL、TCL語句與事務管理

文章目錄 一、介紹二、DML&#xff1a;數據操縱語言三、DDL&#xff1a;數據定義語言四、DCL&#xff1a;數據控制語言五、TCL&#xff1a;事務控制語言六、SELECT 查詢時鎖定 一、介紹 在Oracle數據庫中&#xff0c;掌握和運用DML、DDL、DCL和TCL語句是必不可少的技能。 這些…

【算法】經典算法題

文章目錄 專題一&#xff1a;雙指針1. 移動零2. 復寫零3. 快樂數4. 盛最多水的容器5. 有效三角形的個數6. 查找總價格為目標值的兩個商品7. 三數之和8. 四數之和 專題二&#xff1a;滑動窗口1. 長度最小的子數組2. 無重復字符的最長字串3. 最大連續1的個數 III4. 將 x 減到 0 的…

云原生技術演進之路-(云技術如何一步步演進的,云原生解決了什么問題?)

云技術如何一步步演進的&#xff1f; 云原生解決了什么問題&#xff1f; 物理設備 電腦剛被發明的時候&#xff0c;還沒有網絡&#xff0c;每個電腦&#xff08;PC&#xff09;&#xff0c;就是一個單機。 這臺單機&#xff0c;包括CPU、內存、硬盤、顯卡等硬件。用戶在單機…

電線電纜、漆包線工廠開源MES/生產管理系統/云MES

萬界星空科技專業的漆包線MES系統功能介紹&#xff1a; 從原材料出入庫-拉絲機等設備管理-漆包線稱重打印系統自動入庫&#xff08;支持多臺秤同時稱重&#xff09;-建立銷售報價、銷售訂單-生產訂單-支持掃碼出庫及自動揀貨出庫-應收應付賬款-對接各種其他系統及財務系統。 …

便攜式水污染物監測設備的招標參數有哪些

便攜式多參數水質檢測儀參數特點&#xff1a; 便攜式多參數水質檢測儀參數特點&#xff1a; 便攜式多參數水質快速測定儀&#xff0c;根據國家檢測標準&#xff08;G B &#xff09; 及環境部檢測標準(H J &#xff09;研發生產&#xff0c;本儀器具有檢測快速、操作簡單、測試…

python3實現類似expect shell的交互式與SFTP的腳本

前面寫過一篇關于python實現類似expect shell的交互式能力的文章&#xff0c;現在補全一下加上sftp的能力腳本。 例子在代碼中__example()方法。 依賴paramiko庫&#xff0c;所以需要執行pip install paramiko來安裝。 import os import queue import re import threading im…

綜合實力盤點高性價比還優質的云服務器:亞馬遜云科技仍然領跑市場

如果說云計算是一條流向數字化未來的河流&#xff0c;那亞馬遜云科技毫無疑問是航行在最前面的帆船&#xff1b;如果說云計算是一條通往數字化未來的鐵軌&#xff0c;那亞馬遜云科技就是行駛在最前面的高鐵。接下來回首往昔&#xff0c;以史為鏡&#xff0c;得出云服務器哪家便…

毛里塔尼亞市場開發攻略,收藏一篇就夠了

毛里塔尼亞是非洲西北部的一個國家&#xff0c;也是中國長期援建的一個國家&#xff0c;也是一帶一路上的國家。毛里塔尼亞生產生活資料依賴進口&#xff0c;長期依賴跟我們國家的貿易關系也是比較緊密的&#xff0c;今天就來給大家介紹一下毛里塔尼亞的市場開發公路。文章略長…

Python監控服務進程及自啟動服務方法與實踐

1. 需求概述 當我們在Windows Server環境中部署XX系統的實際應用中&#xff0c;往往會遇到一些運維管理的挑戰。為了確保系統的持續穩定運行&#xff0c;特別是在服務程序因各種原因突然關閉的情況下&#xff0c;我們可以借助Python的強大生態系統來構建一個監控與自動重啟的管…

分布式鏈路追蹤入門篇-基礎原理與快速應用

為什么需要鏈路追蹤&#xff1f; 我們程序員在日常工作中&#xff0c;最常做事情之一就是修bug了。如果程序只是運行在單機上&#xff0c;我們最常用的方式就是在程序上打日志&#xff0c;然后程序運行的過程中將日志輸出到文件上&#xff0c;然后我們根據日志去推斷程序是哪一…

Comsol Multiphysics 6.2 for Mac建模仿真軟件

COMSOL Multiphysics是一款多物理場仿真軟件&#xff0c;旨在幫助工程師、科學家和研究人員解決各種復雜的工程和科學問題。該軟件使用有限元分析方法&#xff0c;可以模擬和分析多個物理場的相互作用&#xff0c;包括結構力學、熱傳導、電磁場、流體力學和化學反應等。 COMSOL…

一些好用的前端小插件(轉自知乎)

一些好用的前端小插件&#xff08;2&#xff09; 1. cropper.js Cropper.js 2.0 是一系列用于圖像裁剪的 Web 組件。 官網地址&#xff1a;https://fengyuanchen.github.io/cropperjs/v2/zh/ 2. Vditor Vditor是一款瀏覽器端的 Markdown 編輯器&#xff0c;支持所見即所得、…

2024年度投資策略:AI大模型和半導體國產化加速

今天分享的是AI系列深度研究報告&#xff1a;《2024年度投資策略&#xff1a;AI大模型和半導體國產化加速》。 &#xff08;報告出品方&#xff1a;東方證券&#xff09; 報告共計&#xff1a;48頁 前言: 行情回顧與未來展望 電子板塊漲幅轉正&#xff0c;信心逐漸回歸。截至…

人人都會Blazor —— 3.3 參數

參數最常見的使用,目的是使組件可以接收動態數據。 聲明參數 參數使用 [Parameter] 特性的公共 C# 屬性進行定義。 在下面的示例中,內置引用類型 (System.String) 和用戶定義的引用類型 (PanelBody) 作為組件參數進行傳遞。 PanelBody.cs: public class PanelBody {publ…

SQL注入漏洞發現和利用,以及SQL注入的防護

一、背景 SQL注入漏洞是一種常見的軟件安全問題&#xff0c;它發生在應用程序的數據庫層中。其核心原理是將用戶輸入的數據當做代碼來執行&#xff0c;違反了“數據與代碼分離”的原則。具體來說&#xff0c;攻擊者通過構造惡意的SQL查詢語句&#xff0c;使得應用程序在執行SQ…

Android NFC手機上實現卡模擬

1&#xff0c; 問&#xff1a;能否在AndroidNFC手機上實現卡模擬&#xff1f; 答&#xff1a;在技術上可行&#xff0c;但是&#xff0c;對一般開發人員來講&#xff0c;目前看來僅僅是技術上可行。 2&#xff0c; 問&#xff1a;具體如何實現呢&#xff1f; 答&#xff1…

git的使用記錄

GitHub是公有的遠程倉庫&#xff0c;Gitlab是私有的遠程倉庫。 git add file git commit -m "add file" git mv filea fileb git log 顯示提交記錄 git log --oneline 一行的簡略信息顯示 git log --oneline --decorate 顯示當前指針 git reset --ha…

矩陣知識補充

正交矩陣 定義&#xff1a; 正交矩陣是一種滿足 A T A E A^{T}AE ATAE的方陣 正交矩陣具有以下幾個重要性質&#xff1a; A的逆等于A的轉置&#xff0c;即 A ? 1 A T A^{-1}A^{T} A?1AT**A的行列式的絕對值等于1&#xff0c;即 ∣ d e t ( A ) ∣ 1 |det(A)|1 ∣det(A)∣…

通用功能——git 攻略

摘要 本文主要介紹git常用命令的使用方法&#xff0c;同時介紹一些常見問題的處理方法&#xff0c;持續更新中… git命令通用選項 大多數git命令都適用的選項列表如下&#xff1a; -v, --verbose show hash and subject, give twice for upstream branch -q, --quie…

Vim 一下日志文件,Java 進程沒了?

一次端口告警&#xff0c;發現 java 進程被異常殺掉&#xff0c;而根因竟然是因為在問題機器上 vim 查看了 nginx 日志。下面我將從時間維度詳細回顧這次排查&#xff0c;希望讀者在遇到相似問題時有些許啟發。 時間線 15:19 收到端口異常 odin 告警。 狀態:P1故障 名稱:應用端…