【笔试强训】DFS、优先队列、滑动窗口笔试题目!

文章目录

      • 1. 单词搜索
      • 2. 除 2 操作
      • 3. dd 爱框框

1. 单词搜索

题目链接
在这里插入图片描述

  • 解题思路:

DFS (深度优先遍历),用一个 pos 记录要匹配单词 word 的位置,每次与 pos 进行匹配判断(这样做的好处是不用把答案存下来)

注意细节❗: ①没有用 flag 来记录的话,所有在 DFS 暴搜的时候需要对返回的结果进行及时的判断

  • 实现代码:
class Solution {


    int dx[4] = {-1, 0, 1, 0};
    int dy[4] = {0, 1, 0, -1};
    int vis[110][110] = {0};


public:

    bool exist(vector<vector<char>>& board, string word) {

    for (int i = 0; i < board.size(); i ++)
    {
        for (int j = 0; j < board[0].size(); j ++)
        {
            if (board[i][j] == word[0])
            {
                // 此处细节点:必须要对结果进行及时判断
                if (dfs(board, word, i, j, 0))
                    return true;
            }
        }
    }  
    return false;
    }

    bool dfs(vector<vector<char>>& board, string word, int x, int y, int pos)
    {
        if (pos + 1 == word.size())
        {
            return true;
        }

        vis[x][y] = 1;
        for (int i = 0; i < 4; i ++)
        {
            int x1 = x + dx[i];
            int y1 = y + dy[i];

            if (x1 >= 0 && x1 < board.size() && y1 >= 0 && y1 < board[0].size() && !vis[x1][y1] && pos < word.size() - 1 &&  board[x1][y1] == word[pos + 1])
            {
                // 注意: 要及时收集结果判断
                if (dfs(board, word, x1, y1, pos + 1))
                    return true;
            }
        }
    
        vis[x][y] = 0;
        return false;
    }
};

2. 除 2 操作

题目链接
在这里插入图片描述
在这里插入图片描述

  • 解题思路:

贪心 + 优先队列,将偶数存入优先队列里面,每次取最大的元素减半

注意细节❗:priority_queue 插入一个元素的时间复杂度是 O(log n),删除堆顶元素也是 O(log n)

在这里插入图片描述

  • 实现代码:
#include <iostream>
#include <queue>

using namespace std;

int n, k;
typedef long long LL;

int main()
{
    priority_queue<LL> heap;

    cin >> n >> k;

    LL x, sum = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> x;
        
        if (x % 2 == 0)
            heap.push(x);

        sum += x;
    }

    while (!heap.empty() && k --)
    {
        LL t = heap.top() / 2;
        heap.pop();
        
        sum -= t;
        
        if (t % 2 == 0)
            heap.push(t);
    }
    
    cout << sum << endl;
    return 0;
}

3. dd 爱框框

题目链接
在这里插入图片描述

  • 解题思路:

滑动窗口的思想(同向双指针)

注意细节❗: ① ✌ 滑动窗口要想清楚四个问题: 什么时候进窗口什么时候出窗口判断条件什么时候更新结果

  • 实现代码:
#include <iostream>

using namespace std;

const int N = 1e7 + 10;
typedef long long LL;

LL n, x;
LL arr[N];

int main()
{
    scanf("%d%d", &n, &x);
    
    for (int i = 1; i <= n; i ++)
        scanf("%lld", &arr[i]);
    
    
    // 滑动窗口的思想 (同向双指针)
    LL left = 0, right = 1;
    LL RetLeft = -1, RetRight = -1, sum = 0, RetLen = N;
    
    while (right <= n)
    {
        sum += arr[right];
        
        while (sum >= x)
        {
            sum -= arr[left];
              left ++;
            
            if (sum >= x && right - left < RetLen)
            {
                RetLeft = left;
                RetRight = right;
                
                RetLen = RetRight - RetLeft;
            }
        }
        right ++;   
    }
    
    cout << RetLeft << " " << RetRight << endl;
    return 0;
    
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入解析Nacos配置中心的动态配置更新技术

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在微服务架构中&#xff0c;配置管理变得尤为关键。Nacos&#xff0c;作为一个开源的、易于使用的、功能丰富的平台&#xff0c;为…

electron的webview和内嵌网页如何通信

在 Electron 的世界里&#xff0c;webview 标签相当于一个小盒子&#xff0c;里面可以装一个完整的网页&#xff0c;就像一个迷你浏览器。当你想和这个小盒子里的内容说话时&#xff08;也就是进行通信&#xff09;&#xff0c;这里有几个方法可以帮你做到&#xff1a; 这里只写…

轻量化模块整理,即插即用

轻量化模块整理&#xff0c;即插即用&#xff08;持续更新&#xff09; 整理一些轻量化的结构&#xff0c;作为知识储备&#xff0c;可以用到后续的项目和研究中 Mobilenetv3 深度可分离卷积 MobileNetV3 是一个轻量级的深度学习模型&#xff0c;专为移动和边缘设备上的高效…

conda配置多版本python

安装conda 以下任选下载 Anaconda Miniconda 配置conda环境变量 比如windows&#xff0c;在配置我的电脑中的环境变量&#xff0c;在系统变量的Path中新增下面内容 需要根据实际目录进行更改 D:\soft\miniconda3 D:\soft\miniconda3\Scripts D:\soft\miniconda3\Library\bi…

windows与linux双系统下,为linux系统/boot独立分区扩容

问题 安装ubuntu系统时&#xff0c;采用手动分区&#xff1a; 1. /boot &#xff1a;一般分配1G&#xff0c;电脑空间大可以分配4G 2. / &#xff1a;分配150-200G&#xff0c;类似windows C盘&#xff0c;存放系统环境&#xff1a;如ROS&#xff0c;python等 3. swap :…

PE文件(一)PE结构概述

PE结构简述 Windows操作系统是只能运行以内存4D 5A开头&#xff0c;翻译是MZ的可执行文件&#xff0c;也叫做PE结构文件&#xff0c;是以exe&#xff0c;.sys&#xff0c;.dll等等作为后缀的文件。而不同的操作系统能运行的可执行文件都是各自特有的&#xff0c;比如Linux可运…

图与图搜索算法

图搜索算法是一个非常重要的概念&#xff0c;它是计算机科学中图论和算法设计的基础部分。在开始讨论图搜索算法之前&#xff0c;我们需要先理解什么是图以及图的基本结构。 什么是图&#xff1f; 图&#xff08;Graph&#xff09;是一种非线性数据结构&#xff0c;它由一组点…

算法训练营第25天回溯(分割)

回溯算法&#xff08;分割&#xff09; 131.分割回文串 力扣题目链接(opens new window) 题目 给定一个字符串 s&#xff0c;将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: “aab” 输出: [ [“aa”,“b”], [“a”,“…

3D模型查看器开发实战【WebGL】

本文介绍如何从头开发一个包含3D 模型查看器的页面 - 尽管它非常简单&#xff0c;但你将学习的步骤也应该有助于构建其他类型的 Web 应用程序。 在自己的网站或博客里展示3D模型更简单的方式是使用NSDT 3DConvert提供的在线服务&#xff0c;无需任何开发工作&#xff0c;5分钟…

简单3步制作纸质英语绘本的mp3英语朗读音频

孩子学英语&#xff0c;需要看很多英语绘本&#xff0c;而且要听配套的音频。但有些英语绘本是没有对应音频的&#xff0c;下面简单三步&#xff0c;就可以将任意英语绘本制作出对应的英语朗读音频。 第一步&#xff0c;手机拍照做成PDF文件&#xff1a; 绘本每一页拍照后&…

模拟量化面试20问回答

原文链接 参考链接 量化的基本公式 对称均匀量化&#xff08;symmetric uniform quantization&#xff09; 对称量化将零点z限制为真实的0。注意对称均匀量化并不是关于零点对称。它还分为有符号和无符号。 signed量化公式 signed量化范围 8bit量化范围[-128, 127] signe…

使用python进行网站答题操作

介绍&#xff1a; 使用Python和DrissionPage模块编写自动化脚本&#xff0c;以模拟人的行为访问网站并获取题目答案进行自动答题。这个脚本似乎是为答题网站设计的&#xff0c;通过监控特定数据包地址来获取题目答案&#xff0c;并模拟点击正确答案进行答题。 代码中的逻辑包…

List实现(2)| LinkedList

参考&#xff1a;LinkedList 源码分析 在Java中&#xff0c;LinkedList是一个双向链表&#xff0c;实现了List和Deque接口&#xff0c;可以被当作列表&#xff08;List&#xff09;、队列&#xff08;Queue&#xff09;或者双端队列&#xff08;Deque&#xff09;使用。它允许…

[渗透测试学习] TwoMillion-HackTheBox

TwoMillion-HackTheBox 信息搜集 nmap扫描一下 nmap -sV -v 10.10.11.221扫描结果 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0) 80/tcp open http nginx 3851/tcp f…

LeetCode第797题: 所有可能的路径

目录 1.问题描述 2.问题分析 1.问题描述 给你一个有 n 个节点的有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09;。 graph[i] 是一个从节点 i 可以访问的所有节点的列表&#xff08…

解决IDEA https://start.spring.io/连接不上

1.换成下边这个地址试试 https://start.springboot.io/2.换成阿里云试试&#xff0c;绝对可行&#xff0c;但是版本有点低 https://start.aliyun.com

使用Java调用音乐开放API,并进行播放

使用Java调用音乐开放API&#xff0c;并进行播放 背景描述 电脑没有下载音乐软件&#xff0c;使用网页播放又不太方便&#xff0c;所有就想着使用Java语言直接调用音乐开放API&#xff0c;然后进行播放音乐。 具体代码如下&#xff0c;包含了注释 package com.lowkey.comple…

python学习笔记B-06:序列结构之列表--列表的创建和删除

序列结构主要有列表、元组、字典、集合和字符串&#xff0c;列表是要学习的第一种序列结构。下面是列表的创建和删除方法。 import random #导入一个随机数发生器 print("创建列表方法1&#xff1a;直接列表名&#xff0c;等号&#xff0c;方括号中间内容用逗号隔开&quo…

基于小程序实现的精准扶贫数据收集系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;ssm 【…

python将xml格式文件转成png或者pdf格式

本文主要介绍运行NCCL代码时输出的xml文件该如何转成更加容易观看的图格式 如下是举例&#xff0c;服务器上的PCIE相关的topo xml 文件 <system version"1"><cpu numaid"1" affinity"ffffff00,0000ffff,ff000000" arch"x86_64&q…