zoukankan      html  css  js  c++  java
  • 地图跳跃-超级码力

    描述

    给定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次方。 有更好快的方法可以交流。

  • 相关阅读:
    【转】【Salesfoece】Salesforce 应用生命周期管理
    【Apex】【Salesfoece】Salesforce 的 package.xml 文件
    【转】【Salesfoece】Apex计划作业框架的实现--用于实现数据的定时自动处理。
    【转】【Salesfoece】Apex 的 Trigger 类简介
    【转】【Salesforce】提高 Visualforce 页面加载效率的小知识
    「这是啥」关于三维偏序
    Javaweb中PO BO VO DTO POJO DAO DO概念理解
    Python多进程、多线程及各自的适用场景
    基于LDA主题模型和SVM的文本分类
    理解accuracy/precision_score、micro/macro
  • 原文地址:https://www.cnblogs.com/yjphhw/p/13693530.html
Copyright © 2011-2022 走看看