zoukankan      html  css  js  c++  java
  • [Swift]LeetCode1197. 进击的骑士 | Minimum Knight Moves

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(let_us_code)
    ➤个人域名:https://www.zengqiang.org
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/11521674.html
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    In an infinite chess board with coordinates from -infinity to +infinity, you have a knight at square [0, 0].

    A knight has 8 possible moves it can make, as illustrated below. Each move is two squares in a cardinal direction, then one square in an orthogonal direction.

    Return the minimum number of steps needed to move the knight to the square [x, y].  It is guaranteed the answer exists.

    Example 1:

    Input: x = 2, y = 1
    Output: 1
    Explanation: [0, 0] → [2, 1]
    

    Example 2:

    Input: x = 5, y = 5
    Output: 4
    Explanation: [0, 0] → [2, 1] → [4, 2] → [3, 4] → [5, 5]
    

    Constraints:

    • |x| + |y| <= 300

    一个坐标可以从 -infinity 延伸到 +infinity 的 无限大的 棋盘上,你的 骑士 驻扎在坐标为 [0, 0] 的方格里。

    骑士的走法和中国象棋中的马相似,走 “日” 字:即先向左(或右)走 1 格,再向上(或下)走 2 格;或先向左(或右)走 2 格,再向上(或下)走 1 格。

    每次移动,他都可以按图示八个方向之一前进。

    现在,骑士需要前去征服坐标为 [x, y] 的部落,请你为他规划路线。

    最后返回所需的最小移动次数即可。本题确保答案是一定存在的。

    示例 1:

    输入:x = 2, y = 1
    输出:1
    解释:[0, 0] → [2, 1]
    

    示例 2:

    输入:x = 5, y = 5
    输出:4
    解释:[0, 0] → [2, 1] → [4, 2] → [3, 4] → [5, 5]
    

    提示:

    • |x| + |y| <= 300

      

     1 class Solution {
     2     func minKnightMoves(_ x: Int, _ y: Int) -> Int {
     3         var r:Int = abs(x)
     4         var c:Int = abs(y)
     5         if r + c == 0 {return 0}
     6         if r + c == 1 {return 3}
     7         if r == 2 && c == 2 {return 4}
     8         var step:Int = max((r+1)/2, (c+1)/2)
     9         step = max(step, (r+c+2)/3)
    10         step += (step^r^c)&1
    11         return step
    12     }
    13 }
  • 相关阅读:
    [luoguP2221] [HAOI2012]高速公路(线段树)
    SICP:对数步数内迭代计算幂的函数
    python__tkinter之listbox&button
    C陷阱与缺陷 之 各种知识技巧
    ACM && Find Minimum in Rotated Sorted Array
    windows编程一些小知识
    Linux_C pthread 关于多线程一个简单的程序
    ACM&贪心算法
    Linux_C socket 数据报之client, server.c
    Linux_C socket 数据报之一些辅助函数
  • 原文地址:https://www.cnblogs.com/strengthen/p/11521674.html
Copyright © 2011-2022 走看看