• 地图跳跃-超级码力


    描述

    给定n×n的地图,每个单元都有一个高度,每次你只能够往相邻的单元格移动,并且要求这两个单元格的高度差不超过target。你不能走出地图之外。求出满足从左上角(0,0)走到右下右下角(n-1,n-1)最小的target

     n<=1000<a[i][j]<100000
     
    示例

    例 1:

    输入:[[1,5],[6,2]],
    输出:4,
    解释:
    有2条路线:
    1. 1 -> 5 -> 2 这条路线上target为4。
    2. 1 -> 6 -> 2 这条路线上target为5。
    所以结果为4

    例 2:

    输入:[[1,5,9],[3,4,7],[6,8,1]],
    输出:6

    class Solution:
        """
        @param arr: the map
        @return:  the smallest target that satisfies from the upper left corner (0, 0) to the lower right corner (n-1, n-1)
        """
        def mapJump(self, arr):
            # Write your code here.
            maxd=100000
            n=len(arr)
            [i.insert(0,200000) for i in arr]
            [i.append(200000) for i in arr]
            arr.insert(0,[200000]*(n+2))
            arr.append([200000]*(n+2))
            op=[[maxd]*(n+2) for i in range(n+2)]
            op[1][1]=0
            for k in range(int(n**0.7)+1):
                for r in range(1,n+1):
                    for c in range(1,n+1):
                        lr=r-1
                        rr=r+1
                        tc=c-1
                        dc=c+1
                        m1=max(op[lr][c],abs(arr[r][c]-arr[lr][c]))
                        m2=max(op[rr][c],abs(arr[r][c]-arr[rr][c]))
                        m3=max(op[r][tc],abs(arr[r][c]-arr[r][tc]))
                        m4=max(op[r][dc],abs(arr[r][c]-arr[r][dc]))
                        op[r][c]= min(m1,m2,m3,m4,op[r][c])
            
            return op[n][n]
            
    我承认这个代码里的迭代次数k是试出来的,需要反复的迭代 当迭代 k=int(n**7)+1次时可以通过,实际上可能出问题,原来使用n,结果超时,后来反复修改k从 k**0.5 尝试到0.7成功了。

    设计的时间复杂度是n的3次方。 有更好快的方法可以交流。

  • 相关阅读:
    Docker决战到底(三) Rancher2.x的安装与使用
    golang实现给图片加水印
    golang实现图片水印效果
    百度ueditor 编辑器使用问题收集
    重要的文件和数据,别放在/tmp下
    在CentOS 7上切换默认的java版本
    [转载]Centos和RedHat的区别和联系
    在Excel的公式框内输入换行符
    Outlook打不开,报错信息为“The time limit for logging on was reached while waiting for system resources. Try again. MAPI 1.0 [000004C2]”
    VMXNET3与E1000E与E1000的比较
  • 原文地址:https://www.cnblogs.com/yjphhw/p/13693530.html
Copyright © 2020-2023  润新知