PayPal Medium csharp

Number of Islands

Animated walkthrough

Step through the algorithm visually — use Play or the step buttons (inspired by AlgoMaster / visualgo).

Step 1 / 1

PayPal interview context: Number of Islands is a Medium Graphs problem — BFS for shortest path in unweighted graphs; DFS for connectivity and cycles.

Use the animation above to step through each move before writing code.

Pattern: Graphs

Read from stdin, write to stdout. Classic interview problem #200.

Problem

Number of Islands — PayPal interview prep · Graphs

Classic interview problem #200.

Input (stdin)

Line 1: rows\nNext: grid rows (0/1)

Output (stdout)

Island count

Your program must read from stdin and write the answer to stdout (no extra debug text).

Examples

Sample
Input
4
11110
11010
11000
00000
Output
1
Hints
  • Input format: Line 1: rows\nNext: grid rows (0/1)
  • DSA Interview 150 — Graphs
  • Problem #200
  • Frequently asked at PayPal
  • Graphs

Your solution

TestStatusDetails
Ready — edit the code above and click Run or Submit.

Solution

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Program
{
    static int[] Ria(string line = null)
    {
        line ??= Console.ReadLine();
        if (string.IsNullOrWhiteSpace(line)) return Array.Empty<int>();
        return line.Trim().Split(new[] { ' ', ',', '\t' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(int.Parse).ToArray();
    }
    static string[] Rsa()
    {
        int n = int.Parse(Console.ReadLine());
        var arr = new string[n];
        for (int i = 0; i < n; i++) arr[i] = Console.ReadLine();
        return arr;
    }
    static void W(params object[] parts) => Console.WriteLine(string.Join(" ", parts));
    static void Wb(bool v) => Console.WriteLine(v ? "true" : "false");
    static void Wi(int v) => Console.WriteLine(v);
    static void Ws(string v) => Console.WriteLine(v);

    static void Main()
    {
int rows = int.Parse(Console.ReadLine());
var grid = new char[rows][];
for (int r = 0; r < rows; r++) grid[r] = Console.ReadLine().Replace(" ", "").ToCharArray();
int count = 0;
void Dfs(int r, int c) {
    if (r < 0 || c < 0 || r >= rows || c >= grid[r].Length || grid[r][c] != '1') return;
    grid[r][c] = '0';
    Dfs(r + 1, c); Dfs(r - 1, c); Dfs(r, c + 1); Dfs(r, c - 1);
}
for (int r = 0; r < rows; r++)
    for (int c = 0; c < grid[r].Length; c++)
        if (grid[r][c] == '1') { count++; Dfs(r, c); }
Wi(count);
    }
}

Try solving on your own first, then reveal the official answer.

Discussion

0

Sign in to join the discussion.

No discussions yet — ask the first question!

Toolliyo Assistant
Ask about tutorials, ebooks, training, pricing, mentor services, and support. I use public site content only—not admin or internal tools.

care@toolliyo.com

Need callback? Share your details