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月中旬,这个时候天气已经有些冷了

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

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

还有良渚,挺不错的

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

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

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

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

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

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

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

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

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

加油!!!

相关推荐
颜酱39 分钟前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919101 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878381 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
DuHz1 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
Polaris北极星少女2 小时前
TRSV优化2
算法
代码游侠2 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
2301_763472462 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
abluckyboy3 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
园小异3 小时前
2026年技术面试完全指南:从算法到系统设计的实战突破
算法·面试·职场和发展
m0_706653233 小时前
分布式系统安全通信
开发语言·c++·算法