欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

leetcode如何解決全排列問題

這篇文章將為大家詳細講解有關leetcode如何解決全排列問題,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

專注于為中小企業(yè)提供網(wǎng)站設計、成都網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)翁牛特免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

回溯法(探索與回溯法)是一種選優(yōu)搜索法,又稱為試探法,按選優(yōu)條件向前搜索,以達到目標。但當探索到某一步時,發(fā)現(xiàn)原先選擇并不優(yōu)或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態(tài)的點稱為“回溯點”。

全排列問題,子集問題,組合和問題都是經(jīng)典的回溯問題。

給定一個沒有重復數(shù)字的序列,返回其所有可能的全排列。

示例:

輸入: [1,2,3]
輸出:
[
 [1,2,3],
 [1,3,2],
 [2,1,3],
 [2,3,1],
 [3,1,2],
 [3,2,1]
]

解題思路:

1,可以遞歸解

2,對于長度為n的全排列,對于任意一個元素,與長度為n-l的全排列拼接而成

3,注意golang slice append的坑

代碼:

func permute(nums []int) [][]int {    var a [][]int    if len(nums)==0{        return a    }    if len(nums)==1{        return append(a,nums)    }    for i:=0;i<len(nums);i++{        aa:=permute(rest(nums,i))        for j:=0;j<len(aa);j++{            a=append(a,append([]int{nums[i]},aa[j]...))        }    }    return a}
func rest(nums []int,i int)[]int{    if i==0{        return nums[1:]    }    if i==len(nums)-1{        return nums[:len(nums)-1]    }    return append(nums[0:i:i],nums[i+1:]...)}

給定一個可包含重復數(shù)字的序列,返回所有不重復的全排列。

示例:

輸入: [1,1,2]
輸出:
[
 [1,1,2],
 [1,2,1],
 [2,1,1]
]

解題思路類似,只是求并集的時候,對比如果有就不并入

func permuteUnique(nums []int) [][]int {  var a [][]int  if len(nums) == 0 {    return a  }  if len(nums) == 1 {    return merge(a, nums)  }  for i := 0; i < len(nums); i++ {    aa := permuteUnique(rest(nums, i))    for j := 0; j < len(aa); j++ {      b := append([]int{nums[i]}, aa[j]...)      a = merge(a, b)    }  }  return a}
func merge(a [][]int, b []int) [][]int {  l := len(a)  if l == 0 {    a = append(a, b)  } else {    m := false    for k := 0; k < l; k++ {      if match(b, a[k]) {        m = true      }    }    if !m {      a = append(a, b)    }  }  return a}func match(a, b []int) bool {  if len(a) == 0 {    return false  }  for i := 0; i < len(a); i++ {    if a[i] != b[i] {      return false    }  }  return true}
func rest(nums []int, i int) []int {  if i == 0 {    return nums[1:]  }  if i == len(nums)-1 {    return nums[:len(nums)-1]  }  return append(nums[0:i:i], nums[i+1:]...)}

關于“l(fā)eetcode如何解決全排列問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

網(wǎng)頁名稱:leetcode如何解決全排列問題
本文來源:http://aaarwkj.com/article10/igeido.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作小程序開發(fā)、做網(wǎng)站、微信公眾號、ChatGPT靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站制作
国产成人免费自拍一区| 国产精品日韩av一区二区| 国产经典午夜福利在线| 美女av在线免费观看| 在线观看日韩三级av| 91成人伦理在线观看| 手机不卡高清播放一区二区| 色吊最新在线视频免费观看| 精品国产乱码一区二区三区四区| 免费精品99久久久国产| 精品久久久久久久久999| 欧美高清成人一区二区三区| 国产精品一区巨乳人妻| 欧美日韩一区二区三区激情| 国产亚洲精品视频在线| 国产黄色片子在线观看| 亚洲av第一区国产精品| 激情毛片av在线免费看| 国产精品日韩一区视频| 欧美日韩午夜福利视频| 国产精品人妻在线av| 一区二区三区毛片视频| 国产精品免费看片网站| 国产日产精品久久婷婷色| 人妻系列少妇人妻偷人| 毛茸茸的阴户在线观看| 免费一区二区三区黄色| 亚洲一级香蕉视频东京热| 中文字幕人妻久久一区| 中文字幕精品一区二区三区在线| 亚洲三区久久婷婷激情| 国产精品久久久亚洲不卡| 青青草原在线视频观看| 98精品熟女亚洲av| 免费av在线观看日韩| 91国产自拍在线视频| 欧美日本国产高清不卡| 极品白嫩少妇无套内谢| 国产精品国产三级国产av野外 | 校花出白浆视频一区二区三区| 亚洲日本韩国三级一区|