日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 2087. 网格图中机器人回家的最小代价(脑筋急转弯)

發布時間:2024/7/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 2087. 网格图中机器人回家的最小代价(脑筋急转弯) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給你一個 m x n 的網格圖,其中 (0, 0) 是最左上角的格子,(m - 1, n - 1) 是最右下角的格子。
給你一個整數數組 startPos ,startPos = [startrow, startcol] 表示 初始 有一個 機器人 在格子 (startrow, startcol) 處。
同時給你一個整數數組 homePos ,homePos = [homerow, homecol] 表示機器人的 在格子 (homerow, homecol) 處。

機器人需要回家。
每一步它可以往四個方向移動:上,下,左,右,同時機器人不能移出邊界。
每一步移動都有一定代價。
再給你兩個下標從 0 開始的額整數數組:長度為 m 的數組 rowCosts 和長度為 n 的數組 colCosts 。

  • 如果機器人往 或者往 移動到第 r 行 的格子,那么代價為 rowCosts[r] 。
  • 如果機器人往 或者往 移動到第 c 列 的格子,那么代價為 colCosts[c] 。

請你返回機器人回家需要的 最小總代價

示例 1:

輸入:startPos = [1, 0], homePos = [2, 3], rowCosts = [5, 4, 3], colCosts = [8, 2, 6, 7] 輸出:18 解釋:一個最優路徑為: 從 (1, 0) 開始 -> 往下走到 (2, 0) 。代價為 rowCosts[2] = 3-> 往右走到 (2, 1) 。代價為 colCosts[1] = 2-> 往右走到 (2, 2) 。代價為 colCosts[2] = 6-> 往右走到 (2, 3) 。代價為 colCosts[3] = 7 。 總代價為 3 + 2 + 6 + 7 = 18示例 2: 輸入:startPos = [0, 0], homePos = [0, 0], rowCosts = [5], colCosts = [26] 輸出:0 解釋:機器人已經在家了,所以不需要移動。總代價為 0 。提示: m == rowCosts.length n == colCosts.length 1 <= m, n <= 10^5 0 <= rowCosts[r], colCosts[c] <= 10^4 startPos.length == 2 homePos.length == 2 0 <= startrow, homerow < m 0 <= startcol, homecol < n

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-cost-homecoming-of-a-robot-in-a-grid
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • 首先不管怎么走不能走到,起點和終點構成的矩形之外,會增加額外的花費
  • 然后在上面條件下,不論怎么走,按照兩個方向的分量來看,花費都是一樣的:行的花費+列的花費
class Solution { public:int minCost(vector<int>& startPos, vector<int>& homePos, vector<int>& rowCosts, vector<int>& colCosts) {int ans = 0;if(homePos[0] >= startPos[0])for(int i = startPos[0]+1; i <= homePos[0]; ++i)ans += rowCosts[i];elsefor(int i = startPos[0]-1; i >= homePos[0]; --i)ans += rowCosts[i];if(homePos[1] >= startPos[1])for(int i = startPos[1]+1; i <= homePos[1]; ++i)ans += colCosts[i];elsefor(int i = startPos[1]-1; i >= homePos[1]; --i)ans += colCosts[i];return ans;} };

140 ms 146.3 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 2087. 网格图中机器人回家的最小代价(脑筋急转弯)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。