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

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)站制作
激情五月综合开心五月| 在线欧美日韩一区二区三区| 国产三级精品三级在线播放| 成年黄网站免费视频大全| 欧美精品蜜桃激情一区久久| 91麻豆精品一二三区在线| 国产精品亚洲伦理在线| 乱码人妻精品一区二区三区| 人妻熟妇一区二区三区成人| 国产熟女肥臀精品国产馆乱| 美女爽到高潮久久久| 中文字幕人妻秘书社长| 国产美女极度色诱视频| 欧美日韩在线视频第三区| 中文字幕av一区二区人妻| 国产成人大片一区二区三区| 丁香婷婷麻豆激情综合网| 国产精品国产三级国产av丨| 日韩欧美一区二区中文字幕视频| 国内精品久久久久久2021| 亚洲欧洲av男人的天堂| 欧美一区二区三区久久束缚| 97免费公开在线观看| 热久久精品只有这里有| 国产午夜福利片新视觉| 不卡的视频在线观看| 日本不卡一区二区在线视频| 中文字幕一区二区三天| 色男人天堂网在线视频| 青青草原这里只有精品| 久久99热婷婷精品一区| 中文字幕精品免费日韩在线| 日本熟妇一区二区三区高清视频| 欧美日韩亚洲视频二区| 国产日韩一区二区三区电影| 国产模特一区二区三区| 日韩免费视频一区二区三区免费| 一区二区三区一级黄色| 熟女中文字幕一区二区| 精品伊人久久大香线蕉| 国产亚洲av综合人人精品|