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

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)站制作
精品久久久久久久久999| 少妇高潮惨叫久久麻豆传| 日韩毛片资源在线观看| 国产一区二区欧美日本| 国产一区av剧情巨作| 青青草视频在线针对华人| 国产强烈高潮粗暴对白| 亚洲一区二区三区经典精品| 91免费看片在线观看| 欧美日韩一区中文字幕| 日日躁夜夜躁久久狠狠躁| 在线视频网友自拍偷拍| 日本中文字幕激情在线| 日韩免费av在线网站| 国产乱一伦一性一情一色| 老汉av免费在线观看| 日韩精品高清中文字幕| 国产免费很黄很色视频| 日本丝袜福利在线观看| 欧美日韩另类中文字幕| 国产一区二区高清在线| 亚洲一区二区三区视频在线观看| 日韩国产乱码一区中文字幕| 国产视频三级在线观看| 欧美一区二区三区日韩精品 | 日本一区二区三区在线观看视频| 欧美精品亚洲精品国产| 亚洲av在线观看午夜| 久久五月婷婷爱综合亚洲| va精品人妻一区二区三区| 中文字幕制服国产精品| 日韩中文字幕一区二区不卡| 日韩不伦高清一区二区三区| 亚洲日本国产一区二区| 欧美精品一区影片在线观看| 东京男人的天堂国产av| 91在线观看高清免费| 91精品国产在线观看| 国语自产精品视频在线不卡| 亚洲成人精品免费观看| 免费av在线网址网站|