leetcode_130

淳属虚构 · · 471 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang:

思路:这题虽然在并查集范畴内,但做法更近于广度优先搜索,和烂橘子一致,需要改变不被围绕区域内'O'的值,以防止重复的查询

代码如下:

func solve(board [][]byte)  {
    if len(board)<=2||len(board[0])<=2 {
        return
    }
    var stack [][]int
    for i:=0;i<len(board);i++{
        if board[i][0]=='O' {
            board[i][0]='U'
            stack=append(stack, []int{i,0})
        }
        if board[i][len(board[0])-1]=='O' {
            board[i][len(board[0])-1]='U'
            stack=append(stack,[]int{i,len(board[0])-1})
        }
    }
    for i:=0;i<len(board[0]);i++{
        if board[0][i]=='O' {
            board[0][i]='U'
            stack=append(stack,[]int{0,i})
        }
        if board[len(board)-1][i]=='O' {
            board[len(board)-1][i]='U'
            stack= append(stack, []int{len(board)-1,i})
        }
    }
    for len(stack)!=0 {
        temp:=stack[0]
        if checkO(board,temp[0]-1,temp[1]) {
            board[temp[0]-1][temp[1]]='U'
            stack=append(stack, []int{temp[0]-1,temp[1]})
        }
        if checkO(board,temp[0]+1,temp[1]) {
            board[temp[0]+1][temp[1]]='U'
            stack=append(stack, []int{temp[0]+1,temp[1]})
        }
        if checkO(board,temp[0],temp[1]+1) {
            board[temp[0]][temp[1]+1]='U'
            stack=append(stack, []int{temp[0],temp[1]+1})
        }
        if checkO(board,temp[0],temp[1]-1) {
            board[temp[0]][temp[1]-1]='U'
            stack=append(stack, []int{temp[0],temp[1]-1})
        }
        stack=stack[1:]
    }
    for i:=0;i<len(board);i++{
        for j:=0;j<len(board[0]);j++{
            if board[i][j]=='O' {
                board[i][j]='X'
            }
            if board[i][j]=='U' {
                board[i][j]='O'
            }
        }
    }
}

func checkO(board [][]byte,i int, j int) bool {
    if i>=1&&i<=len(board)-2&&j>=1&&j<=len(board[0])-2&&board[i][j]=='O'{
        return true
    }
    return false
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:淳属虚构

查看原文:leetcode_130

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

471 次点击  
加入收藏 微博
上一篇:左旋转字符串
下一篇:leetcode_128
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传