美文网首页
8.23 - hard - 96

8.23 - hard - 96

作者: 健时总向乱中忙 | 来源:发表于2017-08-24 02:50 被阅读0次

499. The Maze III

想法很简单,有点懒得写。
在heap里存上 dist,path,cur_pos, 然后再用一个visited来防止重复访问,不过这题答案的写法很巧妙,多练习几次

class Solution(object):
    def findShortestWay(self, maze, ball, hole):
        """
        :type maze: List[List[int]]
        :type ball: List[int]
        :type hole: List[int]
        :rtype: str
        """
        A = maze
        ball, hole = tuple(ball), tuple(hole)
        R, C = len(A), len(A[0])

        def neighbors(r, c):
            for dr, dc, di in [(-1, 0, 'u'), (0, 1, 'r'), 
                               (0, -1, 'l'), (1, 0, 'd')]:
                cr, cc, dist = r, c, 0
                while (0 <= cr + dr < R and 
                        0 <= cc + dc < C and
                        not A[cr+dr][cc+dc]):
                    cr += dr
                    cc += dc
                    dist += 1
                    if (cr, cc) == hole:
                        break
                yield (cr, cc), di, dist

        pq = [(0, '', ball)]
        seen = set()
        while pq:
            dist, path, node = heapq.heappop(pq)
            if node in seen: continue
            if node == hole: return path
            seen.add(node)
            for nei, di, nei_dist in neighbors(*node):
                heapq.heappush(pq, (dist+nei_dist, path+di, nei) )

        return "impossible"

相关文章

  • 8.23 - hard - 96

    499. The Maze III 想法很简单,有点懒得写。在heap里存上 dist,path,cur_pos,...

  • 8.23 - hard - 91

    472. Concatenated Words 利用Trie做出一个TLE的版本。其实简单的利用recursion...

  • 8.23 - hard - 95

    493. Reverse Pairs 值得一看的post https://discuss.leetcode.com...

  • 8.23 - hard - 97

    502. IPO 手撸成功,考虑到排序的话,可以多考虑考虑heap。

  • 8.23 - hard - 92

    480. Sliding Window Median 因为python没有那种hashheap的数据结构,所以要用...

  • 8.23 - hard - 94

    488. Zuma Game 对每一个s消除三个连续的球,然后对于每一个可以消除的位置进行搜索,取其最小值。这道题...

  • 8.23 - hard - 100

    527. Word Abbreviation 基本的想法就是先计算出所有的abbr,然后把相同的abbr的inde...

  • 8.23 - hard - 98

    514. Freedom Trail 手写了TLE版本,加了一些memory,不过还是TLE。基本思路是对的,只是...

  • 8.23 - hard - 99

    517. Super Washing Machines这题挺诡异的,不用到什么数据结构,用到一些数学想法。其中一种...

  • 8.23 - hard - 93

    483. Smallest Good Base一道数学题,证明在这里。https://discuss.leetco...

网友评论

      本文标题:8.23 - hard - 96

      本文链接:https://www.haomeiwen.com/subject/yulsdxtx.html