मान लीजिए कि हमारे पास शहर के ब्लॉकों का प्रतिनिधित्व करने वाले अद्वितीय स्ट्रिंग्स का एक मैट्रिक्स है, और स्ट्रिंग्स की एक और सूची है जिसमें देखने के लिए ब्लॉक हैं। यदि हम ब्लॉक मैट्रिक्स [0] [0] पर हैं, तो प्रत्येक ब्लॉक को क्रम से देखने के लिए आवश्यक कुल मैनहट्टन दूरी ज्ञात कीजिए।
तो, अगर इनपुट पसंद है
प्रश्न | बी | सी |
डी | ई | Z |
जी | जी | मैं |
ब्लॉक =[एच,बी,सी]
फिर आउटपुट 6 होगा क्योंकि "एच" 2 ब्लॉक नीचे (दक्षिण) और 1 ब्लॉक दाएं (पूर्व) है, "बी" 2 ब्लॉकअप (उत्तर) है, "सी" 1 ब्लॉक दाएं (पूर्व) है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- कोर्ड्स:='स्टार्ट' कुंजी और मान (0, 0) वाला नक्शा
- चटाई में प्रत्येक पंक्ति के लिए, करें
- चटाई में प्रत्येक कॉलम के लिए, करें
- कोर्ड्स में (पंक्ति, कॉलम) डालें[mat[row, col]]
- चटाई में प्रत्येक कॉलम के लिए, करें
- जिला:=0
- शुरुआत में 'प्रारंभ' जोड़कर ब्लॉक अपडेट करें
- i के लिए 0 से लेकर ब्लॉक -1 के आकार तक के लिए, करें
- c1 :=coords[blocks[i]]
- c2 :=coords[blocks[i+1]]
- d :=|c1[0]-c2[0]| + |c1[1]-c2[1]|
- जिला:=जिला + घ
- वापसी जिला
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, mat, blocks): coords = {'start': (0,0)} for row in range(len(mat)): for col in range(len(mat[row])): coords[mat[row][col]] = (row,col) dist = 0 blocks = ['start']+blocks for i in range(len(blocks)-1): c1 = coords[blocks[i]] c2 = coords[blocks[i+1]] d = abs(c1[0]-c2[0]) + abs(c1[1]-c2[1]) dist += d return dist ob = Solution() inp = [["q", "b", "c"], ["d", "e", "z"], ["g", "h", "i"]] blk = ["h", "b", "c"] print(ob.solve(inp, blk))
इनपुट
[["q", "b", "c"],["d", "e", "z"],["g", "h", "i"]]
आउटपुट
6