1970. 你能穿过矩阵的最后一天 + 今年总结

算法

1970. 你能穿过矩阵的最后一天

给你一个下标从 1 开始的二进制矩阵,其中 0 表示陆地,1 表示水域。同时给你 rowcol 分别表示矩阵中行和列的数目。

一开始在第 0 天,整个 矩阵都是 陆地 。但每一天都会有一块新陆地被 淹没变成水域。给你一个下标从 1 开始的二维数组 cells ,其中 cells[i] = [ri, ci] 表示在第 i 天,第 rici 列(下标都是从 1 开始)的陆地会变成 水域 (也就是 0 变成 1 )。

你想知道从矩阵最 上面 一行走到最 下面 一行,且只经过陆地格子的 最后一天 是哪一天。你可以从最上面一行的 任意 格子出发,到达最下面一行的 任意 格子。你只能沿着 四个 基本方向移动(也就是上下左右)。

请返回只经过陆地格子能从最 上面 一行走到最 下面 一行的 最后一天

示例 1:

复制代码
输入:row = 2, col = 2, cells = [[1,1],[2,1],[1,2],[2,2]]
输出:2
解释:上图描述了矩阵从第 0 天开始是如何变化的。
可以从最上面一行到最下面一行的最后一天是第 2 天。

示例 2:

复制代码
输入:row = 2, col = 2, cells = [[1,1],[1,2],[2,1],[2,2]]
输出:1
解释:上图描述了矩阵从第 0 天开始是如何变化的。
可以从最上面一行到最下面一行的最后一天是第 1 天。

示例 3:

复制代码
输入:row = 3, col = 3, cells = [[1,2],[2,1],[3,3],[2,2],[1,1],[1,3],[2,3],[3,2],[3,1]]
输出:3
解释:上图描述了矩阵从第 0 天开始是如何变化的。
可以从最上面一行到最下面一行的最后一天是第 3 天。

提示:

  • 2 <= row, col <= 2 * 104
  • 4 <= row * col <= 2 * 104
  • cells.length == row * col
  • 1 <= ri <= row
  • 1 <= ci <= col
  • cells 中的所有格子坐标都是 唯一 的。
java 复制代码
class Solution {
    private static final int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};

    public int latestDayToCross(int row, int col, int[][] cells) {
        int left = 0, right = row * col, ans = 0;
        while (left <= right) {
            int mid = (left + right) / 2;
            int[][] grid = new int[row][col];
            for (int i = 0; i < row; i++) {
                Arrays.fill(grid[i], 1);
            }
            for (int i = 0; i < mid; i++) {
                grid[cells[i][0] - 1][cells[i][1] - 1] = 0;
            }

            Queue<int[]> q = new LinkedList<>();
            for (int i = 0; i < col; i++) {
                if (grid[0][i] == 1) {
                    q.offer(new int[]{0, i});
                    grid[0][i] = 0;
                }
            }
            
            boolean found = false;
            while (!q.isEmpty()) {
                int[] cell = q.poll();
                int x = cell[0], y = cell[1];
                for (int[] dir : dirs) {
                    int nx = x + dir[0];
                    int ny = y + dir[1];
                    if (nx >= 0 && nx < row && ny >= 0 && ny < col && grid[nx][ny] == 1) {
                        if (nx == row - 1) {
                            found = true;
                            break;
                        }
                        q.offer(new int[]{nx, ny});
                        grid[nx][ny] = 0;
                    }
                }
                if (found) {
                    break;
                }
            }
            
            if (found) {
                ans = mid;
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return ans;
    }
}

二分法+广度优先搜索

今年总结

对的,没错,我还在继续更新着我的博客

不过和往年以及今年上半年不同的是

现在的我,盘坐在床上,喝着茶百道,身旁是一个ipad,ipad上显示和豆包的语音通话,床边是一个龟缸,龟缸里一只长达9cm的草龟正在做着瑜伽哈哈哈

回望今年

发生的事情之多不亚于以往的每一年

今年1月,爱上了一颗草莓

今年2月,穿着一身粉色的睡衣,爬树登高望远,企图将这中华大地尽收于眼底

今年3月,在学校......

今年4月,还是在学校,不过遇到了猫学长~

好多好可爱好粘人~此时的我还不知道,再过几个月,会有人直接把一辆大大大猫塞进我的怀里~

今年5月,和一起写项目的小伙伴去爬嵩山啦~

此时的我还不知道,再过个几个月,我会为了拍出更漂亮的照片而买一个max pro手机

今年6月份,毕业回家啦~

戴上不同颜色的路障我就变成了魔法师~

6月下旬,去杭州啦~

杭州动物园里的动物感觉都小小的~

但是看到了心心念念的大熊猫!

此时的我还不知道,再过个几个月,我会养一只宠物~

又去爬了宝石山,在这里可以看到西湖全景!

但是山顶有些危险!但是没关系,我是超人,我会飞!

今年7月份,又去进行了环西湖徒步!

该说不说,晴西湖和雨西湖都让我给遇到了

这一碗猪肚,要七十多!我的小钱钱!

今年8月份,去了青山湖水上森林,体验了一把水上划船的快乐!

等我回去一看,我直接黑了好几个度!!!

今年9月份,又去了飞来峰,与身处不同时代的王安石一起感受相同的山

9月24日,前往云栖小镇,听讲座

get了好多小玩意儿!

还体验了一把机器人按摩,也没人告诉我体验这个一上来就要扒裤子啊!!!

国庆节回家啦!!!

我的小宠物也到家啦!!!拆箱,哇!!!可爱死了!!!!!

这家伙是想可爱噶我好继承我的笑点吗!!!

国庆到了公司,我的迷雾键盘到啦!!!

两个星期后,我的小宠物嘎了

我一直觉得它是被我吓死的,后来听别人说,可能是买到了病蛇,我......

心情难受的我,去同事家撸猫

从来没见到过这么大的猫,不,这是一辆猫,同时咔的一下子,把猫塞我怀里

我跟抱着个小孩似的,紧张坏了

布偶猫怎么能这么漂亮

又过了一个周,我心情还是有些郁闷,于是买了个小米17pro max顶配版

请开始你的表演吧哇哈哈哈哈

放大50倍依然清晰!!!

虎跑公园的这棵树真美啊

玉皇山也是挺不错的

这也算是达成不同角度看西湖的成就了吗~

11月份,又去了植物园,挺不错的,只是人太多了

又去了我心心念念的爬宠体验馆

好大的金直间

好大的蓝舌

好漂亮的糖果

我爱它们

又去了西溪湿地,真美啊,徒步散心的好去处

有幸拍到了夕阳

有幸拍到了飞机

我爱这个世界

虽然我总是很倒霉,可能是和我老是算命有关吧

中旬,迟到了西湖醋鱼,挺好吃的

又去了西湖游船,挺不错的,这个角度的西湖美到爆炸,照片根本拍不出来眼睛看到的那种震撼感

又去体验了一把凌晨两点的西湖,人好少好少,还有大爷在湖里捞垃圾

凌晨的杭州,路上的行人与车辆也很少很少,体验了一把炸街的快乐

怪不得别人都喜欢凌晨开着车去炸街

12月中旬,这个时候天气已经有些冷了

去象山美院玩了一把,又去铜鉴湖走了一圈,美到爆炸

怪不得古人会这么喜欢喝茶赏景,换我我直接原地爆炸

还有良渚,挺不错的

明天就是元旦了,元旦也要出去玩!!!

登高望远!锻炼身体!!!

回望今年,去了好多地方,杭州玩了个遍

原本计划元旦去舟山的,但是天气不合适,没事,咱只能去爬山了

该说不说,下班年是参杂着泪水的,第一次正式工作,我才发现,我的进步空间还很大

真正的步入社会,才发现,不是每一个人都是好人,人们总是很自私的

唯有自身的强大才是真正的强大

持续学习,完善自我,很重要

接下来的一年里,我将全力推进各个方面的学习!!!

加油!!!

相关推荐
长安er11 小时前
LeetCode215/347/295 堆相关理论与题目
java·数据结构·算法·leetcode·
元亓亓亓11 小时前
LeetCode热题100--62. 不同路径--中等
算法·leetcode·职场和发展
小白菜又菜11 小时前
Leetcode 1925. Count Square Sum Triples
算法·leetcode
登山人在路上12 小时前
Nginx三种会话保持算法对比
算法·哈希算法·散列表
写代码的小球12 小时前
C++计算器(学生版)
c++·算法
AI科技星13 小时前
张祥前统一场论宇宙大统一方程的求导验证
服务器·人工智能·科技·线性代数·算法·生活
Fuly102413 小时前
大模型剪枝(Pruning)技术简介
算法·机器学习·剪枝
Xの哲學13 小时前
Linux网卡注册流程深度解析: 从硬件探测到网络栈
linux·服务器·网络·算法·边缘计算
bubiyoushang88813 小时前
二维地质模型的表面重力值和重力异常计算
算法