<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)296:最佳的碰頭地點(diǎn)

          共 2665字,需瀏覽 6分鐘

           ·

          2021-06-17 20:48

          算法的重要性,我就不多說(shuō)了吧,想去大廠,就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問(wèn)題叫做 最佳的碰頭地點(diǎn),我們先來(lái)看題面:
          https://leetcode-cn.com/problems/best-meeting-point/

          A group of two or more people wants to meet and minimize the total travel distance. You are given a 2D grid of values 0 or 1, where each 1 marks the home of someone in the group. The distance is calculated usingManhattan Distance, where distance(p1, p2) = |p2.x - p1.x| + |p2.y - p1.y|.

          有一隊(duì)人(兩人或以上)想要在一個(gè)地方碰面,他們希望能夠最小化他們的總行走距離。給你一個(gè) 2D 網(wǎng)格,其中各個(gè)格子內(nèi)的值要么是 0,要么是 1。
          1 表示某個(gè)人的家所處的位置。這里,我們將使用 曼哈頓距離 來(lái)計(jì)算,其中 distance(p1, p2) = |p2.x - p1.x| + |p2.y - p1.y|。

          示例


          解題


          • 看的官方解答

          • 兩個(gè)方向的坐標(biāo)是獨(dú)立的,獨(dú)立考慮

          • 然后在中位數(shù)的點(diǎn)是總距離最近的

          • 按序搜集橫縱坐標(biāo),雙指針,兩端點(diǎn)相減的距離累加



          class Solution {
          public:
              int minTotalDistance(vector<vector<int>>& grid) {
                int m = grid.size(), n = grid[0].size(), i, j, dis = 0;
                vector<int> x, y;
                for(i = 0; i < m; ++i)
                  for(j = 0; j < n; ++j)
                    if(grid[i][j])
                      x.push_back(i);
              for(j = 0; j < n; ++j)
                for( i = 0; i < m; ++i)
                  if(grid[i][j])
                    y.push_back(j);
              i = 0, j = x.size()-1;
              while(i < j)
                dis += x[j--]-x[i++];
              i = 0, j = y.size()-1;
              while(i < j)
                dis += y[j--]-y[i++];
              return dis;
              }
          };


          好了,今天的文章就到這里,如果覺(jué)得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力 。

          上期推文:
          LeetCode1-280題匯總,希望對(duì)你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)281:鋸齒迭代器
          LeetCode刷題實(shí)戰(zhàn)282:給表達(dá)式添加運(yùn)算符
          LeetCode刷題實(shí)戰(zhàn)283:移動(dòng)零
          LeetCode刷題實(shí)戰(zhàn)284:頂端迭代器
          LeetCode刷題實(shí)戰(zhàn)285:二叉搜索樹(shù)中的順序后繼
          LeetCode刷題實(shí)戰(zhàn)286:墻和門
          LeetCode刷題實(shí)戰(zhàn)287:尋找重復(fù)數(shù)
          LeetCode刷題實(shí)戰(zhàn)288:?jiǎn)卧~的唯一縮寫(xiě)
          LeetCode刷題實(shí)戰(zhàn)289:生命游戲
          LeetCode刷題實(shí)戰(zhàn)290:?jiǎn)卧~規(guī)律
          LeetCode刷題實(shí)戰(zhàn)291:?jiǎn)卧~規(guī)律II
          LeetCode刷題實(shí)戰(zhàn)292:Nim 游戲
          LeetCode刷題實(shí)戰(zhàn)293:翻轉(zhuǎn)游戲
          LeetCode刷題實(shí)戰(zhàn)294:翻轉(zhuǎn)游戲II
          LeetCode刷題實(shí)戰(zhàn)295:數(shù)據(jù)流的中位數(shù)

          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产视频黄片 | 深爱五月丁香花 | 亚洲一级无码在线观看 | 亚洲国产无码在线 | 久久无码精品一区二区三区 |