當前位置: 妍妍網 > 碼農

單位招了個37歲程式設計師,前後端通吃,計畫一個人搞定!薪資比小年輕還少。。

2024-08-20碼農

最近一網友發文稱他單位招了個37歲的程式設計師,薪資16000,前後端都幹,一個人能就能把計畫搞定,老板覺得賺翻了。

37歲至少工作10多年了,前後端都能幹的好很正常,大齡程式設計師只是年齡大了,又不是廢了,我覺得大齡程式設計師是最具有價效比的。

網友精彩評論:

--------------下面是今天的演算法題--------------

來看下今天的演算法題,這題是LeetCode的第463題:島嶼的周長。

問題描述


來源:LeetCode第463題

難度:簡單

給定一個 row x col 的二維網格地圖 grid ,其中:grid[i][j] = 1 表示陸地, grid[i][j] = 0 表示水域。

網格中的格子 水平胡垂直 方向相連(對角線方向不相連)。整個網格被水完全包圍,但其中恰好有一個島嶼(或者說,一個或多個表示陸地的格子相連組成的島嶼)。

島嶼中沒有「湖」(「湖」 指水域在島嶼內部且不和島嶼周圍的水相連)。格子是邊長為 1 的正方形。網格為長方形,且寬度和高度均不超過 100 。計算這個島嶼的周長。

範例1:

輸入 :grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]

輸出 :16

解釋 :它的周長是上面圖片中的 16 個黃色的邊

範例2:

輸入 :grid = [[1]]

輸出 :4

  • row == grid.length

  • col == grid[i].length

  • 1 <= row, col <= 100

  • grid[i][j] 為 0 或 1

  • 問題分析


    最近我們已經做過很多關於島嶼的問題了,

    今天這題也是關於島嶼的,不過是最簡單的,這題讓計算的是島嶼的周長。我們知道一塊陸地貢獻的周長為 4 ,如果兩個陸地相連,那麽在相連的位置是沒有邊界的,周長就減少了 2 。

    我們只需要遍歷所有的位置,遇到一個陸地,周長就增加 4 ,但還需要判斷它的左邊和上邊有沒有和它相連的陸地,如果有一個相連的陸地,周長數量就減 2 。

    這裏為什麽只判斷左邊和上邊,比如右邊有相連的陸地,只需要在遍歷右邊那塊陸地的時候減去即可,否則左邊陸地的時候也減就會減兩遍。

    JAVA:

    publicintislandPerimeter(int[][] grid){
    int m = grid.length, n = grid[0].length;
    int ans = 0;
    for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
    if (grid[i][j] == 1) {// 陸地
    ans += 4;// 一塊陸地有 4 個邊
    if (i > 0 && grid[i - 1][j] == 1)
    ans -= 2;// 如果左邊也是陸地
    if (j > 0 && grid[i][j - 1] == 1)
    ans -= 2;// 如果上邊也是陸地
    }
    }
    }
    return ans;
    }

    C++:

    public:
    intislandPerimeter(vector<vector<int>> &grid){
    int m = grid.size(), n = grid[0].size();
    int ans = 0;
    for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
    if (grid[i][j] == 1) {// 陸地
    ans += 4;// 一塊陸地有 4 個邊
    if (i > 0 && grid[i - 1][j] == 1)
    ans -= 2;// 如果左邊也是陸地
    if (j > 0 && grid[i][j - 1] == 1)
    ans -= 2;// 如果上邊也是陸地
    }
    }
    }
    return ans;
    }

    Python:

    defislandPerimeter(self, grid: List[List[int]]) -> int:
    m, n = len(grid), len(grid[0])
    ans = 0
    for i in range(m):
    for j in range(n):
    if grid[i][j] == 1: # 陸地
    ans += 4# 一塊陸地有 4 個邊
    if i > 0and grid[i - 1][j] == 1:
    ans -= 2# 如果左邊也是陸地
    if j > 0and grid[i][j - 1] == 1:
    ans -= 2# 如果上邊也是陸地
    return ans