สมมติว่าเรามีภาพที่ประกอบด้วยพิกเซลขาวดำ เราต้องหาจำนวนพิกเซลที่โดดเดี่ยวสีดำ รูปภาพนี้แสดงโดยอาร์เรย์ถ่าน 2 มิติที่ประกอบด้วย 'B' และ 'W' สำหรับพิกเซลขาวดำตามลำดับ
พิกเซลโดดเดี่ยวสีดำจริงๆ แล้วคือ 'B' ซึ่งอยู่ที่ตำแหน่งเฉพาะที่แถวเดียวกันและคอลัมน์เดียวกันไม่มีพิกเซลสีดำอื่นใด
หากอินพุตเป็นแบบ −
ว | ว | ข |
ว | ข | ว |
ข | ว | ว |
ผลลัพธ์จะเป็น 3 เพราะทั้งสาม 'B' เป็นพิกเซลโดดเดี่ยวสีดำ
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดภาพ
-
m :=(ถ้า n ไม่ใช่ศูนย์ แสดงว่าขนาดคอลัมน์ มิฉะนั้น 0)
-
กำหนดแถวอาร์เรย์สองแถวและคอลัมน์ขนาด n
-
ret :=0, firstRow :=0
-
สำหรับการเริ่มต้น i :=0 เมื่อ i
-
สำหรับการเริ่มต้น j :=0 เมื่อ j
-
ถ้า picture[i, j] เหมือนกับ 'B' แล้ว −
-
ถ้า picture[0, j] <'Y' และ picture[0, j] ไม่เท่ากับ 'V' ดังนั้น −
-
(เพิ่มรูปภาพ[0, j] ขึ้น 1)
-
-
ถ้าฉันเหมือนกับ 0 แล้ว −
-
(เพิ่มแถวแรก 1)
-
-
มิฉะนั้น เมื่อ picture[i, 0] <'Y' และ picture[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)
-
-
มิฉะนั้น เมื่อ picture[i, 0] เหมือนกับ 'C' หรือ picture[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