国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【LeetCode】劍指 Offer <二刷>(6)

這篇具有很好參考價值的文章主要介紹了【LeetCode】劍指 Offer <二刷>(6)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

題目:劍指 Offer 12. 矩陣中的路徑 - 力扣(LeetCode)

題目的接口:

解題思路:

代碼:

過啦?。?!

題目:劍指 Offer 13. 機器人的運動范圍 - 力扣(LeetCode)

題目的接口:

解題思路:

代碼:

過啦?。?!

寫在最后:


題目:劍指 Offer 12. 矩陣中的路徑 - 力扣(LeetCode)

【LeetCode】劍指 Offer <二刷>(6),38 天二刷劍指 Offer,leetcode,算法,職場和發(fā)展,go,golang

題目的接口:

func exist(board [][]byte, word string) bool {

}

解題思路:

這是一道經典的搜索題,用和是深度優(yōu)先搜素,這個方法是我比較喜歡使用的方法,我來講講這個實現方法的幾個核心:

我們從上往下看,dic 數組的作用是讓我們可以搜索的時候往四個方向搜素;

vis 數組的作用是用來判斷在這次搜索中,格子是否被占用;

check 函數,這里就是 golang 的特色實現,我們把函數邏輯實現在主邏輯內;

最后的那個循環(huán)就是將每個格子都作為起點走搜索的邏輯。

代碼:

type pair struct {
    x int
    y int
}

var dic = []pair{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}

func exist(board [][]byte, word string) bool {
    h, w := len(board), len(board[0])

    // 用于判斷格子是否已經被占用
    vis := make([][]bool, h)
    for i := range vis {
        vis[i] = make([]bool, w)
    }

    // 搜索函數
    var check func(i, j, k int) bool
    check = func(i, j, k int) bool {
        if board[i][j] != word[k] { // 字符匹配失敗
            return false
        }
        if k == len(word)-1 { // 單詞匹配成功
            return true
        }
        vis[i][j] = true // 標記使用過的單元格
        defer func() { vis[i][j] = false }() // 回溯的時候還原使用過的單元格
        for _, dir := range dic {
            newI, newJ := dir.x+i, dir.y+j
            if newI >= 0 && newI < h && newI < h && newJ >= 0 && newJ < w && !vis[newI][newJ] {
                if  check(newI, newJ, k+1) {
                    return true
                }
            }
        }
        return false
    }

    // 每個格子作為起點搜素
    for i, row := range board {
        for j := range row {
            if check(i, j, 0) {
                return true
            }
        }
    }
    return false
}

過啦!??!

【LeetCode】劍指 Offer <二刷>(6),38 天二刷劍指 Offer,leetcode,算法,職場和發(fā)展,go,golang

題目:劍指 Offer 13. 機器人的運動范圍 - 力扣(LeetCode)

【LeetCode】劍指 Offer <二刷>(6),38 天二刷劍指 Offer,leetcode,算法,職場和發(fā)展,go,golang

題目的接口:

func movingCount(m int, n int, k int) int {

}

解題思路:

這道題還是一道搜索題,跟上一題差不多,主要有兩個要點,首先是這道題我們得計算機器人走的步數,第二點是我們需要求出他的位數和才能判斷他是否能夠抵達該位置。

代碼:

func movingCount(m int, n int, k int) int {
	dp := make([][]int, m)
	for i := range dp {
		dp[i] = make([]int, n)
	}

	return dfs(m, n, 0, 0, k, dp)
}

func dfs(m, n, i, j, k int, dp [][]int) int {
	if i < 0 || j < 0 || i >= m || j >= n || dp[i][j] == 1 || (sumPos(i)+sumPos(j)) > k {
		return 0
	}

	dp[i][j] = 1

	sum := 1
	sum += dfs(m, n, i, j+1, k, dp)
	sum += dfs(m, n, i+1, j, k, dp)
	return sum
}

// 求所有位之和
func sumPos(n int) int {
	var sum int

	for n > 0 {
		sum += n % 10
		n = n / 10
	}

	return sum
}

過啦?。?!

【LeetCode】劍指 Offer <二刷>(6),38 天二刷劍指 Offer,leetcode,算法,職場和發(fā)展,go,golang

寫在最后:

以上就是本篇文章的內容了,感謝你的閱讀。

如果感到有所收獲的話可以給博主點一個哦。

如果文章內容有遺漏或者錯誤的地方歡迎私信博主或者在評論區(qū)指出~文章來源地址http://www.zghlxwxcb.cn/news/detail-703501.html

到了這里,關于【LeetCode】劍指 Offer <二刷>(6)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【LeetCode】劍指 Offer <二刷>(4)

    【LeetCode】劍指 Offer <二刷>(4)

    目錄 題目:劍指 Offer 09. 用兩個棧實現隊列 - 力扣(LeetCode) 題目的接口: 解題思路: 代碼: 過啦?。?! 題目:劍指 Offer 10- I. 斐波那契數列 - 力扣(LeetCode) 題目的接口: 解題思路: 代碼: 過啦!??! 寫在最后: 這道題我用 C++ 寫的時候是比較簡單順手的,用 STL 可以

    2024年02月10日
    瀏覽(20)
  • (搜索) 劍指 Offer 38. 字符串的排列 ——【Leetcode每日一題】

    (搜索) 劍指 Offer 38. 字符串的排列 ——【Leetcode每日一題】

    難度:中等 輸入一個字符串,打印出該字符串中字符的所有排列。 你可以以任意順序返回這個字符串數組,但里面 不能有重復元素 。 示例: 輸入:s = “abc” 輸出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”] 限制 : 1 = s 的長度 = 8 ??思路:回溯 可以直接 暴力窮舉 ,但

    2024年02月12日
    瀏覽(29)
  • 【leetcode刷題之路】劍指Offer(3)——搜索與回溯算法

    7 搜索與回溯算法 7.1 【BFS】劍指 Offer 32 - I - 從上到下打印二叉樹 https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/ ??這里借助隊列來實現廣度優(yōu)先遍歷,由于需要訪問每一層的節(jié)點,而且這一層訪問才可以訪問下一層,所以可以考慮隊列的先進先出,先把每一層的節(jié)

    2024年02月13日
    瀏覽(48)
  • 【leetcode刷題之路】劍指Offer(4)——分治+排序算法+動態(tài)規(guī)劃

    8 分治算法 8.1 【遞歸】劍指 Offer 07 - 重建二叉樹 https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/ ??前序遍歷是根左右,中序遍歷是左根右,這也就意味著前序遍歷的第一個節(jié)點是整棵樹的根節(jié)點,順著這個節(jié)點找到它在中序遍歷中的位置,即為in_root,那么in_root左邊的都在左子

    2024年02月11日
    瀏覽(23)
  • 【算法】雙指針——leetcode盛最多水的容器、劍指Offer57和為s的兩個數字

    【算法】雙指針——leetcode盛最多水的容器、劍指Offer57和為s的兩個數字

    盛水最多的容器 (1)暴力解法 ??算法思路:我們枚舉出所有的容器大小,取最大值即可。 ??容器容積的計算方式: ??設兩指針 i , j ,分別指向水槽板的最左端以及最右端,此時容器的寬度為 j - i 。由于容器的高度由兩板中的較短的板決定,因此可得容積公式 :

    2024年02月13日
    瀏覽(25)
  • 【LeetCode】劍指 Offer(27)

    【LeetCode】劍指 Offer(27)

    目錄 題目:劍指 Offer 53 - I. 在排序數組中查找數字 I - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦?。。?寫在最后: 那么這道題呢, 如果只是作為一道題,或者說筆試題, 我們當然是二話不說直接暴力拿下, 來看代碼: 是的,就是這么簡單,三行代碼暴力拿下

    2023年04月13日
    瀏覽(22)
  • 【LeetCode】劍指 Offer(28)

    【LeetCode】劍指 Offer(28)

    目錄 題目:劍指 Offer 54. 二叉搜索樹的第k大節(jié)點 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦?。?! 題目:劍指 Offer 55 - I. 二叉樹的深度 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦!?。?題目:劍指 Offer 55 - II. 平衡二叉樹 - 力扣(Leetcode) 題目的接

    2023年04月24日
    瀏覽(34)
  • 【LeetCode】劍指 Offer(21)

    【LeetCode】劍指 Offer(21)

    目錄 題目:劍指 Offer 39. 數組中出現次數超過一半的數字 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦?。?! 題目:劍指 Offer 40. 最小的k個數 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦?。?! 寫在最后: 這道題,我的思路是直接排序, 然后返回中間

    2023年04月10日
    瀏覽(30)
  • 【LeetCode】劍指 Offer(26)

    【LeetCode】劍指 Offer(26)

    目錄 題目:劍指 Offer 51. 數組中的逆序對 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦?。?! 寫在最后: 這一道題,我的思路是用雙指針暴力求解, 但這個數組長度,O(N^2)的時間復雜度肯定是不可能把所有樣例跑完, 看了大佬的思路,用的是歸并排序,(如果不

    2023年04月11日
    瀏覽(21)
  • 【LeetCode】劍指 Offer(25)

    【LeetCode】劍指 Offer(25)

    目錄 題目:劍指 Offer 49. 丑數 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦?。?! 寫在最后: 丑數這道題用到一點動態(tài)規(guī)劃的思想, 具體思路如下: 根據題意: 如果說第一個丑數是一,包含質因子 2、3 和 5 的數稱作丑數, 那么我們發(fā)現,之后的丑數: 都是前

    2023年04月09日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包