99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

超刺激,騰訊要招7000位實習生。

0
分享至

專欄:50多種數據結構徹底征服

專欄:50多種經典圖論算法全部掌握

最近騰訊發文稱要在全球招7000+位實習生,行業涵蓋技術研究的多個前沿領域,包括自然語言處理、計算機視覺、高性能計算以及基礎架構等方向。這些領域都是當前科技發展的熱點,也是騰訊戰略布局的重要方向。

同時,騰訊還提供了大量需求量大的崗位,如后臺開發、PC 客戶端開發、移動客戶端開發、游戲客戶端開發、產品策劃、產品運營、游戲策劃培訓生、游戲發行 / 運營培訓生等。有需要的同學趕緊去投遞吧,簡歷投遞入口>>>join.qq.com


--------------下面是今天的算法題--------------

來看下今天的算法題,這題是LeetCode的第37題:解數獨。

問題描述

來源:LeetCode第37題

難度:困難

編寫一個程序,通過填充空格來解決數獨問題。數獨的解法需遵循如下規則:

1,數字 1-9 在每一行只能出現一次。

2,數字 1-9 在每一列只能出現一次。

3,數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。

數獨部分空格內已填入了數字,空白格用 '.' 表示。

示例 1:


輸入:board = [ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".","."], [".","9","8",".",".",".",".","6","."], ["8",".",".",".","6",".",".",".","3"], ["4",".",".","8",".","3",".",".","1"], ["7",".",".",".","2",".",".",".","6"], [".","6",".",".",".",".","2","8","."], [".",".",".","4","1","9",".",".","5"], [".",".",".",".","8",".",".","7","9"]] 輸出:[ ["5","3","4","6","7","8","9","1","2"], ["6","7","2","1","9","5","3","4","8"], ["1","9","8","3","4","2","5","6","7"], ["8","5","9","7","6","1","4","2","3"], ["4","2","6","8","5","3","7","9","1"], ["7","1","3","9","2","4","8","5","6"], ["9","6","1","5","3","7","2","8","4"], ["2","8","7","4","1","9","6","3","5"], ["3","4","5","2","8","6","1","7","9"]] 解釋:輸入的數獨如上圖所示,唯一有效的解決方案如下所示:


提示:

1,board.length == 9

2,board[i].length == 9

3,board[i][j] 是一位數字或者 '.'

4,題目數據 保證 輸入數獨僅有一個解

問題分析

解數獨問題是一道經典的 回溯算法 問題,它和八皇后問題很類似,都可以使用回溯算法解決,不過數獨問題要比八皇后問題稍微復雜一點,因為八皇后問題只需要每行放一個皇后就可以了,而數獨問題需要每行全部放上數字。

回溯算法其實就是試探,如果不了解回溯算法的也可以看下我很久之前寫的一篇文章。

對于解數獨這道題,我們可以在每一個空的位置放入一個數字,如果所有空的位置都能正確放入數字,說明這就是數獨的一個解,如果任何一個位置放入數字發生了沖突,我們就撤銷,然后嘗試放其他數字,如果當前位置放任何一個數字都會發生沖突,說明前面放的某個數字有問題,繼續撤銷……。

如下圖所示,我們在第3個位置只能放1,2,4這三個數字,否則放任何數字都會發生沖突。其實就相當于一顆n叉樹,如果當前位置能放數字,我們就沿著這個分支往下走,如果不能放,我們就撤銷。如果所有位置都能放入數字且不發生沖突,說明放的全部數字是其中的一個解。


JAVA:

// 回溯算法
public boolean solveSudoku(char[][] board) {
    return backTrace(board, 0, 0);
}

// row表示第幾行,col表示第幾列。
private boolean backTrace(char[][] board, int row, int col) {
    // row是從0開始的,當row等于board.length的時候表示數獨的
    // 最后一行全部讀遍歷完了,說明數獨中的值是有效的,直接返回true
    if (row == board.length)
        return true;
    // 如果當前行的最后一列也遍歷完了,就從下一行的第一列開始。
    if (col == board.length)
        return backTrace(board, row + 1, 0);
    // 如果當前位置已經有數字了,就不能再填了,直接跳過
    if (board[row][col] != '.')
        return backTrace(board, row, col + 1);
    // 如果上面條件都不滿足,我們就從1到9選擇一個合適的數字填入到數獨中
    for (char i = '1'; i <= '9'; i++) {
        // 判斷當前位置[row,col]是否可以放數字i,如果不能放再判斷下
        // 一個能不能放,直到找到能放的為止,如果從1-9都不能放,就會下面
        // 直接return false
        if (!isValid(board, row, col, i))
            continue;
        // 如果能放數字i,就把數字i放進去
        board[row][col] = i;
        // 如果成功就直接返回,不需要再嘗試了
        if (backTrace(board, row, col))
            return true;
        // 否則就撤銷重新選擇
        board[row][col] = '.';
    }
    // 如果當前位置[row,col]不能放任何數字,直接返回false
    return false;
}

// 驗證當前位置[row,col]是否可以存放數字c
private boolean isValid(char[][] board, int row, int col, char c) {
    for (int i = 0; i < 9; i++) {
        // 當前列有沒有和字符c重復的
        if (board[i][col] == c)
            return false;
        // 當前行有沒有和字符c重復的
        if (board[row][i] == c)
            return false;
        // 當前的單元格內是否有和字符c重復的
        if (board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] == c)
            return false;
    }
    return true;
}

C++:

public:
    void solveSudoku(vector

 >& board) {      backTrace(board, 0, 0); } //row表示第幾行,col表示第幾列。 bool backTrace(vector

 >& board, int row, int col) {     //注意row是從0開始的,當row等于board.length的時候表示數獨的     //最后一行全部讀遍歷完了,說明數獨中的值是有效的,直接返回true     if (row == board.size())         return true;     //如果當前行的最后一列也遍歷完了,就從下一行的第一列開始。這里的遍歷     //順序是從第1行的第1列一直到最后一列,然后第二行的第一列一直到最后     //一列,然后第三行的……     if (col == board.size())         return backTrace(board, row + 1, 0);     //如果當前位置已經有數字了,就不能再填了,直接跳過     if (board[row][col] != '.')         return backTrace(board, row, col + 1);     //如果上面條件都不滿足,我們就從1到9選擇一個合適的數字填入到數獨中     for (char i = '1'; i <= '9'; i++) {         //判斷當前位置[row,col]是否可以放數字i,如果不能放再判斷下         //一個能不能放,直到找到能放的為止,如果從1-9都不能放,就會下面         //直接return false         if (!isValid(board, row, col, i))             continue;         //如果能放數字i,就把數字i放進去         board[row][col] = i;         //如果成功就直接返回,不需要再嘗試了         if (backTrace(board, row, col))             return true;         //否則就撤銷重新選擇         board[row][col] = '.';     }     //如果當前位置[row,col]不能放任何數字,直接返回false     return false; } // 驗證當前位置[row,col]是否可以存放字符c bool isValid(vector

 >& board, int row, int col, char c) {     for (int i = 0; i < 9; i++) {         //當前列有沒有和字符c重復的         if (board[i][col] == c)             return false;         //當前行有沒有和字符c重復的         if (board[row][i] == c)             return false;         //當前的單元格內是否有和字符c重復的         if (board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] == c)             return false;     }     return true; }



筆者簡介

博哥,真名:王一博,畢業十多年, 作者,專注于 數據結構和算法 的講解,在全球30多個算法網站中累計做題2000多道,在公眾號中寫算法題解800多題,對算法題有自己獨特的解題思路和解題技巧,喜歡的可以給個關注,也可以 下載我整理的1000多頁的PDF算法文檔 。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
泰柬再交火,互驅外交官,泰網友:中國千萬別插手,洪森辟謠北上

泰柬再交火,互驅外交官,泰網友:中國千萬別插手,洪森辟謠北上

掌青說歷史
2025-07-25 10:58:39
娃哈哈老員工爆料:宗馥莉與杜建英都不算太厲害,真正厲的還是她

娃哈哈老員工爆料:宗馥莉與杜建英都不算太厲害,真正厲的還是她

南南說娛
2025-07-16 15:10:38
鴻蒙智行回應輔助駕駛測試爭議 曬出2025上半年成績單

鴻蒙智行回應輔助駕駛測試爭議 曬出2025上半年成績單

手機中國
2025-07-25 15:36:47
山大、湘雅、中山大學、南方醫科大等臨床專業紛紛遇冷!網友:不建議學醫!

山大、湘雅、中山大學、南方醫科大等臨床專業紛紛遇冷!網友:不建議學醫!

醫脈圈
2025-07-25 20:25:03
伊朗總統:已做好反擊以色列準備

伊朗總統:已做好反擊以色列準備

參考消息
2025-07-23 10:55:30
壽命竟由咳嗽次數決定?最新研究:活過80歲的人,每天咳嗽絕不超過這個數,真的嗎?

壽命竟由咳嗽次數決定?最新研究:活過80歲的人,每天咳嗽絕不超過這個數,真的嗎?

消化石醫生
2025-07-24 23:32:25
演員張藝洋已執行死刑!中國娛樂圈首例,倪大紅、李雪健被牽連

演員張藝洋已執行死刑!中國娛樂圈首例,倪大紅、李雪健被牽連

阿纂看事
2025-07-25 17:12:19
全新寶馬X5終于來了!內飾首次曝光,物理鍵全消失,顛覆升級

全新寶馬X5終于來了!內飾首次曝光,物理鍵全消失,顛覆升級

米粒說車唯一呀
2025-07-24 16:09:46
1953年,國民黨一人被下令槍決,陳毅聞后怒道:不能殺,他有功勞

1953年,國民黨一人被下令槍決,陳毅聞后怒道:不能殺,他有功勞

紀實文錄
2025-07-12 18:35:32
馬杜羅稱美國雪佛龍公司獲準繼續在委內瑞拉運營

馬杜羅稱美國雪佛龍公司獲準繼續在委內瑞拉運營

北青網-北京青年報
2025-07-25 09:45:07
被“84消毒液”的用法驚到了!打開思路后,竟解決了不少家務難題

被“84消毒液”的用法驚到了!打開思路后,竟解決了不少家務難題

裝修秀
2025-07-22 11:30:03
剛剛通知!無錫著名大集團 正式更名!

剛剛通知!無錫著名大集團 正式更名!

無錫eTV全媒體
2025-07-25 18:49:12
江蘇和浙江養老金方案公布,養老金3000元,誰漲得多?

江蘇和浙江養老金方案公布,養老金3000元,誰漲得多?

數字財經智庫
2025-07-25 14:32:51
深圳地鐵大媽已社會性死亡,全網曝光無遮擋,現場孫子都嫌她丟人

深圳地鐵大媽已社會性死亡,全網曝光無遮擋,現場孫子都嫌她丟人

熱點菌本君
2025-07-25 11:42:54
杜建英是真沒想到,宗老還留了這手!難怪叔叔根本拿捏不住宗馥莉

杜建英是真沒想到,宗老還留了這手!難怪叔叔根本拿捏不住宗馥莉

美美談情感
2025-07-25 01:05:41
跌慘了!從6.4萬跌到3.3萬,廣州一知名小區房價腰斬,縮水近50%

跌慘了!從6.4萬跌到3.3萬,廣州一知名小區房價腰斬,縮水近50%

火山詩話
2025-07-24 10:44:56
從明天起,廣州進入防蚊滅蚊攻堅行動周!定點收治醫院已公布

從明天起,廣州進入防蚊滅蚊攻堅行動周!定點收治醫院已公布

王曉愛體彩
2025-07-26 02:57:33
家有這3生肖貧窮一時,富貴一世,8 月開始麻袋裝錢,富得不得了

家有這3生肖貧窮一時,富貴一世,8 月開始麻袋裝錢,富得不得了

人閒情事
2025-07-24 19:51:29
姜文做了一個錯誤的決定,高估朗朗在國內的影響力,實在是可笑

姜文做了一個錯誤的決定,高估朗朗在國內的影響力,實在是可笑

可樂談情感
2025-07-25 19:15:33
金牌榜美國28金領跑中國單日7金緊追,女籃決戰美中成最大看點

金牌榜美國28金領跑中國單日7金緊追,女籃決戰美中成最大看點

溫柔嘗
2025-07-25 13:13:31
2025-07-26 03:43:00
數據結構和算法
數據結構和算法
專門介紹和寫算法題解的號
238文章數 3關注度
往期回顧 全部

科技要聞

36款熱門車高危智駕場景測試,“團滅”!

頭條要聞

8旬翁下葬前墓地被人埋死狗沿路埋鐵釘暗器 官方介入

頭條要聞

8旬翁下葬前墓地被人埋死狗沿路埋鐵釘暗器 官方介入

體育要聞

3年過去了,她還是歐洲杯上最酷的姐

娛樂要聞

汪蘇瀧不忍了 !張碧晨痛失《年輪》演唱權

財經要聞

劉煜輝:當下重要不是找確定性而是轉折點

汽車要聞

李斌一口氣講了近3個小時樂道L90 原因是為啥?

態度原創

藝術
房產
本地
健康
公開課

藝術要聞

故宮珍藏的墨跡《十七帖》,比拓本更精良,這才是地道的魏晉寫法

房產要聞

分數線集體飆漲!海中867分!2025海南中招格局大變!

本地新聞

換個城市過夏天|風拂鹽湖,躲進格爾木的盛夏清涼

呼吸科專家破解呼吸道九大謠言!

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 米泉市| 乌拉特中旗| 郓城县| 赞皇县| 陆良县| 南部县| 环江| 龙口市| 石屏县| 江山市| 鄂州市| 井陉县| 鹿泉市| 孝义市| 鄂伦春自治旗| 盐亭县| 南召县| 新化县| 潜江市| 波密县| 射洪县| 宜春市| 怀宁县| 大丰市| 岢岚县| 奇台县| 商水县| 襄城县| 溧阳市| 香河县| 贡嘎县| 隆回县| 宁国市| 甘泉县| 济南市| 新巴尔虎左旗| 平安县| 东兰县| 枣庄市| 马关县| 曲松县|