LeetCode-1030. 距離順序排列矩陣單元格

題目描述 [ 距離順序排列矩陣單元格]

給出 R 行 C 列的矩陣,其中的單元格的整數(shù)坐標(biāo)為 (r, c)蛔琅,滿足 0 <= r < R 且 0 <= c < C仪糖。

另外鹤竭,我們?cè)谠摼仃囍薪o出了一個(gè)坐標(biāo)為 (r0, c0) 的單元格挂脑。

返回矩陣中的所有單元格的坐標(biāo)藕漱,并按到 (r0, c0) 的距離從最小到最大的順序排欲侮,其中,兩單元格(r1, c1) 和 (r2, c2) 之間的距離是曼哈頓距離肋联,|r1 - r2| + |c1 - c2|威蕉。(你可以按任何滿足此條件的順序返回答案。)

示例

輸入:R = 2, C = 2, r0 = 0, c0 = 1
輸出:[[0,1],[0,0],[1,1],[1,0]]
解釋:從 (r0, c0) 到其他單元格的距離為:[0,1,1,2]
[[0,1],[1,1],[0,0],[1,0]] 也會(huì)被視作正確答案橄仍。

解題思路一

  • 廣度優(yōu)先搜索
  • 要把xy坐標(biāo)都存下來韧涨,所以略微復(fù)雜了點(diǎn)把

代碼

class Solution {
public:
    void push(int i, int j, queue<pair<int, int> > &queue1, int R, int C){
        if(i<0||i>R-1||j<0||j>C-1) return;
        else{
            queue1.push(make_pair(i, j));
        }
    }

    vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
        vector<vector<int> > res;
        queue<pair<int, int> > queue1;
        set<pair<int, int> > hashset;
        if(R==0 || C==0) return res;
        queue1.push(make_pair(r0, c0));
//        hashset.insert(make_pair(r0, c0));
        while(!queue1.empty()){
            auto temp = queue1.front();
            queue1.pop();
            if(hashset.count(temp)==0){
                hashset.insert(temp);
                vector<int> ans;
                ans.push_back(temp.first);
                ans.push_back(temp.second);
                res.push_back(ans);
                push(temp.first-1, temp.second, queue1, R, C);
                push(temp.first+1, temp.second, queue1, R, C);
                push(temp.first, temp.second-1, queue1, R, C);
                push(temp.first, temp.second+1, queue1, R, C);
            }
        }
        return res;
    }
};

解題思路二

  • 把矩陣中的點(diǎn)到目標(biāo)點(diǎn)的距離按照距離進(jìn)行排序輸出即可
  • 大概是腦殘所以才會(huì)想到上面那么復(fù)雜的解法把

代碼

class Solution {
public:
    vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
        vector<vector<int>> res(R*C,vector<int>(3));
        int num=0;
        for(int i=0;i<C;i++)
        {
            for(int j=0;j<R;j++)
            {
                res[num][0]=j;
                res[num][1]=i;
                res[num][2]=abs(r0-j)+abs(c0-i);
                num++;
            }
        }
        sort(res.begin(),res.end(),ismax);//排序
        for(int i=0;i<num;i++)//將曼哈頓距離刪除
        {
            res[i].pop_back();
        }
        return res;
    }
    static bool ismax(vector<int> &a,vector<int> &b)
    {
        return a[2]<b[2];
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市侮繁,隨后出現(xiàn)的幾起案子虑粥,更是在濱河造成了極大的恐慌,老刑警劉巖鼎天,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舀奶,死亡現(xiàn)場(chǎng)離奇詭異暑竟,居然都是意外死亡斋射,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門但荤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罗岖,“玉大人,你說我怎么就攤上這事腹躁∩0” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵纺非,是天一觀的道長(zhǎng)哑了。 經(jīng)常有香客問我,道長(zhǎng)烧颖,這世上最難降的妖魔是什么弱左? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮炕淮,結(jié)果婚禮上拆火,老公的妹妹穿的比我還像新娘。我一直安慰自己涂圆,他們只是感情好们镜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著润歉,像睡著了一般模狭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上踩衩,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天嚼鹉,我揣著相機(jī)與錄音邪意,去河邊找鬼。 笑死反砌,一個(gè)胖子當(dāng)著我的面吹牛雾鬼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宴树,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼策菜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了酒贬?” 一聲冷哼從身側(cè)響起又憨,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锭吨,沒想到半個(gè)月后蠢莺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡零如,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年躏将,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片考蕾。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祸憋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肖卧,到底是詐尸還是另有隱情蚯窥,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布塞帐,位于F島的核電站拦赠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏葵姥。R本人自食惡果不足惜荷鼠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牌里。 院中可真熱鬧颊咬,春花似錦、人聲如沸牡辽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽态辛。三九已至麸澜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奏黑,已是汗流浹背炊邦。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工编矾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馁害。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓窄俏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親碘菜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凹蜈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容