मान लीजिए कि हमारे पास ब्लैक एंड व्हाइट पिक्सल वाली एक तस्वीर है, हमें ब्लैक लोनली पिक्सल्स की संख्या का पता लगाना है। यहां चित्र को 2डी चार सरणी द्वारा दर्शाया गया है जिसमें क्रमशः ब्लैक एंड व्हाइट पिक्सल के लिए 'बी' और 'डब्ल्यू' शामिल हैं।
एक काला अकेला पिक्सेल वास्तव में 'बी' होता है जो एक विशिष्ट स्थान पर स्थित होता है जहां एक ही पंक्ति और एक ही कॉलम में कोई अन्य काला पिक्सेल नहीं होता है।
अगर इनपुट इस तरह है -
W | डब्ल्यू | बी |
W | बी | डब्ल्यू |
बी | डब्ल्यू | डब्ल्यू |
आउटपुट 3 होगा। क्योंकि तीनों 'बी' ब्लैक लोनली पिक्सल हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
n :=चित्र का आकार
-
m :=(यदि n शून्य नहीं है, तो स्तंभ का आकार, अन्यथा 0)
-
दो सरणियों की पंक्ति और आकार n के कॉलम को परिभाषित करें
-
रिट:=0, फर्स्टरो:=0
-
इनिशियलाइज़ i :=0 के लिए, जब i
-
इनिशियलाइज़ j :=0 के लिए, जब j
-
अगर तस्वीर [i, j] 'बी' के समान है, तो -
-
अगर तस्वीर [0, जे] <'वाई' और तस्वीर [0, जे] 'वी' के बराबर नहीं है, तो -
-
(तस्वीर बढ़ाएँ[0, j] 1 से)
-
-
अगर मैं 0 के समान हूं, तो -
-
(पहली पंक्ति को 1 से बढ़ाएं)
-
-
अन्यथा जब चित्र [i, 0] <'Y' और चित्र [i, 0] 'V' के बराबर नहीं है, तो -
-
(तस्वीर बढ़ाएं[i, 0] 1 से)
-
-
-
-
-
इनिशियलाइज़ i :=0 के लिए, जब i
-
इनिशियलाइज़ j :=0 के लिए, जब j
-
यदि चित्र [i, j] <'W' और (चित्र [0, j] 'C' के समान है या चित्र [0, j] 'X' के समान है), तो -
-
अगर मैं 0 के समान हूं, तो -
-
ret :=(यदि ret + firstRow 1 के समान है, तो 1 अन्यथा 0)
-
-
अन्यथा जब चित्र [i, 0] 'सी' के समान है या चित्र [i, 0] 'X' के समान है, तो -
-
(रिटर्न 1 से बढ़ाएं)
-
-
-
-
-
वापसी रिट
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: int findLonelyPixel(vector<vector<char>>& picture) { int n = picture.size(); int m = n ? picture[0].size() : 0; vector<int< row(n); vector<int< col(m); int ret = 0; int firstRow = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (picture[i][j] == 'B') { if (picture[0][j] < 'Y' && picture[0][j] != 'V'){ picture[0][j]++; } if (i == 0) firstRow++; else if (picture[i][0] < 'Y' && picture[i][0] != 'V') { picture[i][0]++; } } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (picture[i][j] < 'W' && (picture[0][j] == 'C' || picture[0][j] == 'X')) { if (i == 0) ret += firstRow == 1 ? 1 : 0; else if (picture[i][0] == 'C' || picture[i][0] == 'X') ret++; } } } return ret; } }; main(){ Solution ob; vector<vector<char>> v = {{'W','W','B'},{'W','B','W'},{'B','W','W'}}; cout << (ob.findLonelyPixel(v)); }
इनपुट
{{'W','W','B'},{'W','B','W'},{'B','W','W'}}
आउटपुट
3