【每日刷题】Day142

【每日刷题】Day142

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 1219. 黄金矿工 - 力扣(LeetCode)

2. 980. 不同路径 III - 力扣(LeetCode)

3. 733. 图像渲染 - 力扣(LeetCode)

1. 1219. 黄金矿工 - 力扣(LeetCode)

//思路:dfs+哈希

//本题思路与 Day 141 中的 "单词搜索" 十分相似

class Solution {

public:

    int ans = 0;

//这里tmp是形参,回溯时自动恢复现场

    void dfs(vector<vector<int>>& grid,int i,int j,vector<vector<bool>>& hash,int tmp)

    {  

        if(i>=grid.size()||i<0||j>=grid[0].size()||j<0||!grid[i][j])//这里判断能否继续搜索的条件:1. 越界访问  2. 当前位置为0

        {

            ans = ans>tmp?ans:tmp;//记录较大值

            return;

        }

        tmp+=grid[i][j];

        hash[i][j] = true;

        if(i-1>=0&&!hash[i-1][j])

            dfs(grid,i-1,j,hash,tmp);

        if(i+1<=grid.size()&&!hash[i+1][j])//这里就知道为什么哈希要多开一格了,因为 i+1<=grid.size(),如果不多开一格会越界

            dfs(grid,i+1,j,hash,tmp);

        if(j-1>=0&&!hash[i][j-1])

            dfs(grid,i,j-1,hash,tmp);

        if(j+1<=grid[0].size()&&!hash[i][j+1])

            dfs(grid,i,j+1,hash,tmp);

        hash[i][j] = false;

    }

    int getMaximumGold(vector<vector<int>>& grid)

    {

        vector<vector<bool>> hash(16,vector<bool>(16));

        for(int i = 0;i<grid.size();i++)

        {

            for(int j = 0;j<grid[0].size();j++)

            {

                if(grid[i][j])//寻找非0元素进行dfs

                {

                    hash[i][j] = true;

                    dfs(grid,i,j,hash,0);

                    hash[j][j] = false;

                }

            }

        }

        return ans;

    }

};

2. 980. 不同路径 III - 力扣(LeetCode)

//思路:dfs+哈希

class Solution {

public:

    int ans = 0;

    void dfs(vector<vector<int>>& grid,int i,int j,int sum,int tmp,vector<vector<bool>>& hash)//tmp变量用于记录走过0位置的数量

//哈希表用于记录已经走过的位置,防止重复走过

//sum就是0的总数

    {

        if((i>=grid.size()||i<0||j>=grid[0].size()||j<0)||(grid[i][j] == -1 || (grid[i][j]==2&&tmp!=sum)))//剪枝操作:也就是此路不通,另寻他路

            return;

        if(grid[i][j]==2&&tmp==sum)//走完了所有的0位置,并且最终所处位置为2

        {

            ans++;

            return;

        }

        tmp++;//每走过一个0位置tmp++

        hash[i][j] = true;//将当前位置标记为 "已访问"

//上、下、左、右递归

        if(i-1>=0&&!hash[i-1][j])

            dfs(grid,i-1,j,sum,tmp,hash);

        if(i+1<=grid.size()&&!hash[i+1][j])

            dfs(grid,i+1,j,sum,tmp,hash);

        if(j-1>=0&&!hash[i][j-1])

            dfs(grid,i,j-1,sum,tmp,hash);

        if(j+1<=grid[0].size()&&!hash[i][j+1])

            dfs(grid,i,j+1,sum,tmp,hash);

        hash[i][j] = false;//恢复现场

    }

    int uniquePathsIII(vector<vector<int>>& grid)

    {

        vector<vector<bool>> hash(21,vector<bool>(21));

        int sum = 0;

        for(int i = 0;i<grid.size();i++)

            for(int j = 0;j<grid[0].size();j++)

                if(!grid[i][j]) sum++;//统计0的个数

        for(int i = 0;i<grid.size();i++)

        {

            for(int j = 0;j<grid[0].size();j++)

            {

                if(grid[i][j]==1)

                {

                    dfs(grid,i,j,sum,-1,hash);//从1位置开始 dfs

                    break;

                }

            }

        }

        return ans;

    }

};

3. 733. 图像渲染 - 力扣(LeetCode)

//思路:floodfill算法。实际上还是dfs+哈希

class Solution {

public:

    void dfs(vector<vector<int>>& image, int i, int j, int color,int flag, vector<vector<bool>>& hash)

    {

        if(i>=image.size()||i<0||j>=image[0].size()||j<0||image[i][j]!=flag)//剪枝操作同时是递归结束条件:1. 越界  2. 当前区域颜色与原始颜色不相同

            return;

        image[i][j] = color;//将与原始颜色相同的区域更改为 color

        hash[i][j] = true;//将当前位置设为 "已访问" 

//上、下、左、右递归

        if(i-1>=0&&!hash[i-1][j])

            dfs(image,i-1,j,color,flag,hash);

        if(i+1<=image.size()&&!hash[i+1][j])

            dfs(image,i+1,j,color,flag,hash);

        if(j-1>=0&&!hash[i][j-1])

            dfs(image,i,j-1,color,flag,hash);

        if(j+1<=image[0].size()&&!hash[i][j+1])

            dfs(image,i,j+1,color,flag,hash);

        hash[i][j] = false;//恢复现场

    }

    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color)

    {

        vector<vector<bool>> hash(51,vector<bool>(51));

        dfs(image,sr,sc,color,image[sr][sc],hash);//从 [sr,sc] 位置开始 dfs

        return image;

    }

};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454603.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++20中头文件ranges的使用

<ranges>是C20中新增加的头文件&#xff0c;提供了一组与范围(ranges)相关的功能&#xff0c;此头文件是ranges库的一部分。包括&#xff1a; 1.concepts: (1).std::ranges::range:指定类型为range&#xff0c;即它提供开始迭代器和结束标记(it provides a begin iterato…

MP9928模块分析

MP9928 是一款高性能的同步降压 DC/DC 转换器控制器 IC&#xff0c;具有宽输入范围。以下是其操作和关键特性的总结&#xff1a; 概述 电流模式控制&#xff1a;MP9928 使用电流模式、可编程开关频率控制架构&#xff0c;通过外部 N 沟道 MOSFET 开关来调节输出电压。 反馈和…

PRCV2024:可信AI向善发展与智能文档加速构建

目录 0 写在前面1 GAI时代的挑战&#xff1a;图像内容安全1.1 图像篡改与对抗攻击1.2 生成式图像鉴别1.3 人脸鉴伪模型体验1.4 助力可信AI向善发展 2 GAI时代的机遇&#xff1a;大模型加速器2.1 TextIn大模型加速器2.2 通用文档解析2.3 文本向量模型 3 总结 0 写在前面 中国模…

认识一下:__asm { int 80h; LINUX - sys_fork }

这行代码 __asm { int 80h; LINUX - sys_fork } 使用了汇编语言的语法来直接调用 Linux 系统调用 fork。下面是对这行代码的详细解析&#xff1a; 代码解析 __asm: 这是一个用于嵌入汇编代码的指令&#xff0c;通常在 C 或 C 代码中使用&#xff0c;允许开发者直接插入汇编语言…

信息安全系统设计第七周

文章目录 密码系统设计学习内容AI 对学习内容的总结&#xff08;1分&#xff09;要求总结 第10章&#xff1a;身份认证和PKI理论基础第11章&#xff1a;实战PKI对 AI 总结的反思与补充&#xff08;2分&#xff09;要求反思与补充 学习思维导图&#xff08;2分&#xff09;要求思…

Pytorch 实现图片分类

CNN 网络适用于图片识别&#xff0c;卷积神经网络主要用于图片的处理识别。卷积神经网络&#xff0c;包括一下几部分&#xff0c;输入层、卷积层、池化层、全链接层和输出层。 使用 CIFAR-10 进行训练&#xff0c; CIFAR-10 中图片尺寸为 32 * 32。卷积层通过卷积核移动进行计…

告别微信封号!学会这5招,让你的账号坚不可摧

在这个信息爆炸的时代&#xff0c;无论是工作沟通、社交互动还是获取信息&#xff0c;微信都扮演着极其重要的角色。但是&#xff0c;随着微信平台规则的日益严格&#xff0c;账号被封的风险也随之增加。今天&#xff0c;我们就来聊聊如何有效防止 微信被封&#xff0c;让你的账…

【RL Latest Tech】安全强化学习(Safe RL):理论、方法与应用

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

Python | Leetcode Python题解之第486题预测赢家

题目&#xff1a; 题解&#xff1a; class Solution:def PredictTheWinner(self, nums: List[int]) -> bool:length len(nums)dp [0] * lengthfor i, num in enumerate(nums):dp[i] numfor i in range(length - 2, -1, -1):for j in range(i 1, length):dp[j] max(num…

uniapp结合uview-ui创建项目

准备工作&#xff1a; 下载HBuilderX;官网地址:HBuilderX-高效极客技巧 安装node.js;官网地址&#xff1a;Node.js — 在任何地方运行 JavaScript,下载所需版本&#xff0c;安装后配置好环境变量即可 方式一&#xff08;NPM安装方式&#xff09;&#xff1a; 1、打开开发者…

代码随想录-哈希表-两个数组的交集

题目与思路 这个题目可以用大小为1000的数组&#xff0c;因为限制了变量大小。我用的是set&#xff0c;感觉这个才是本意。 下面代码是用set实现的hash结构。先用set1存储nums1中的去重元素&#xff0c;然后用set2存储结果集 最后将set转为array用了两种方式&#xff0c;一是…

LINUX设备OTA时无法从HTTP服务器(TOMCAT)下载文件

疑难问题排查记录 问题 linux设备作为http客户端&#xff0c;执行OTA前先从HTTP服务器下载bin固件&#xff0c;测试nginx没有问题&#xff0c;nodejs编写的HTTP服务器也没有问题&#xff0c;而软件同事使用的Tomcat则无法成功下载。 排查经过 首先利用chrome浏览器测试下载…

WebGl 实现图片平移、缩放和旋转

1.图片平移 在WebGL中实现图片平移&#xff0c;可以通过修改顶点着色器中的顶点位置来实现。平移的基本思想是将每个顶点的位置向量沿着指定的方向&#xff08;通常是x轴和y轴&#xff09;进行平移。在顶点着色器中&#xff0c;可以通过添加或减去一个统一的偏移量&#xff08…

「AIGC」n8n AI Agent开源的工作流自动化工具

n8n AI Agent 是一个利用大型语言模型(LLMs)来设计和构建智能体(agents)的工具,这些智能体能够执行一系列复杂的任务,如理解指令、模仿类人推理,以及从用户命令中理解隐含意图。n8n AI Agent 的核心在于构建一系列提示(prompts),使 LLM 能够模拟自主行为。 传送门→ …

C++:stack 和 queue 的使用和模拟实现

使用 要注意&#xff0c;stack 和 queue 没有迭代器。 stack void teststack() {stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);cout << st.size() << endl;while (!st.empty()){cout << st.top() << " ";…

电机编码器

旋转式编码器 链接: 野火编码器 单圈&#xff0c;多圈绝对式编码器 在单圈绝对值编码器中&#xff0c;单圈并不表示编码器机械转动的圈数&#xff0c;而是指断电记忆的范围。实际上&#xff0c;机械转动是可以无限制地进行圈数的&#xff0c;但是断电记忆仅限于一圈的范围内…

构建后端为etcd的CoreDNS的容器集群(二)、下载最新的etcd容器镜像

在尝试获取etcd的容器的最新版本镜像时&#xff0c;使用latest作为tag取到的并非最新版本&#xff0c;本文尝试用实际最新版本的版本号进行pull&#xff0c;从而取到想的最新版etcd容器镜像。 一、用latest作为tag尝试下载最新etcd的镜像 1、下载镜像 [rootlocalhost opt]# …

bash之基本运算符

一.算术运算符 vim test.sh #!/bin/basha10 b20valexpr $a $b echo "a b : $val"valexpr $a - $b echo "a - b : $val"valexpr $a \* $b echo "a * b : $val"valexpr $b / $a echo "b / a : $val"valexpr $b % $a echo "b % a …

《重置MobaXterm密码并连接Linux虚拟机的完整操作指南》

目录 引言 一、双击MobaXterm_Personal_24.2进入&#xff0c;但是忘记密码。 那么接下来请跟着我操作。 二、点击此链接&#xff0c;重设密码。 三、下载完成后&#xff0c;现在把这个exe文件解压。注意解压要与MobaXterm_Personal_24.2.exe在同一目录下哦&#xff0c;不然…

LMS自适应滤波器原理与应用Matlab程序

1. 引言 自适应滤波器是一种根据输入数据动态调整其滤波系数的滤波器&#xff0c;能够在未知或变化的环境中有效工作。最小均方&#xff08;LMS&#xff0c;Least Mean Squares&#xff09;自适应滤波器是自适应滤波器家族中最经典的一种&#xff0c;其以计算简便、收敛速度快…