备战秋招(coding篇)

其中coding题目来源于师兄面试经验

1、链表的结构体+反转链表

本质上就是一个构造函数

struct ListNode{
  int val_;
  ListNode* next_;
  ListNode() : val_(0), next_(NULL) {}
  ListNode(int x) : val_(x), next_(NULL) {}
  ListNode(int x, ListNode* next) : val_(x), next_(next) {}
};

反转链表:

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
/*
struct ListNode{
  int val_;
  ListNode* next_;
  ListNode() : val_(0), next_(NULL) {}
  ListNode(int x) : val_(x), next_(NULL) {}
  ListNode(int x, ListNode* next) : val_(x), next_(next) {}
};
*/
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* pre = nullptr;
        ListNode* cur = head;
        while(cur) {
            ListNode* tmp = cur->next;
            cur->next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
};

2、实现一个网页类 能够进行前进、后退、跳转操作

#include <iostream>
#include <stack>
#include <string>
using namespace std; // 这里为了方便开发

class Web {
public:
    Web() {};

    // 访问
    void Visit(const string &pages) {
        while (!backed_pages_.empty()) {
            backed_pages_.pop();
        }
        visited_pages_.push(pages);
        cout << pages << endl;
    }

    // 后退
    void Back() {
        if (visited_pages_.empty()) {
            cout << "ingore" << endl;
        } else {
            backed_pages_.push(visited_pages_.top());
            visited_pages_.pop();
            if (!visited_pages_.empty()) {
                cout << visited_pages_.top() << endl;
            } else {
                cout << "ingore" << endl;
                visited_pages_.push(backed_pages_.top());
                backed_pages_.pop();
            }
        }
    }

    // 前进
    void Forward() {
        if (backed_pages_.empty()) {
            cout << "ingore" << endl;
        } else {
            visited_pages_.push(backed_pages_.top());
            backed_pages_.pop();
            cout << visited_pages_.top() << endl;
        }
    }
    ~Web() {};

private:
    stack<string> visited_pages_; // 记录访问的页面
    stack<string> backed_pages_;  // 记录回退的页面
};

int main() {
    int n;
    cin >> n;
    Web web;
    for (int i = 0; i < n; ++i){
        string action, page;
        cin >> action;
        if (action == "VISIT") {
            cin >> page;
            web.Visit(page);
        } else if (action == "BACK") {
            web.Back();
        } else if (action == "FORWARD") {
            web.Forward();
        } else {
            cout << "Invalid Action!" << endl;
        }
    }
    return 0;
}
8
VISIT
www.baidu.com
www.baidu.com
VISIT
www.sougou.com
www.sougou.com
BACK
www.baidu.com
FORWARD
www.sougou.com

3、二维矩阵,由0、1填充,其中1代表陆地,0代表海洋,找出距离陆地最远的那块海洋的位置

对应力扣1162题

你现在手里有一份大小为 n x n 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地。

请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的,并返回该距离。如果网格上只有陆地或者海洋,请返回 -1

我们这里说的距离是「曼哈顿距离」( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个单元格之间的距离是 |x0 - x1| + |y0 - y1| 。

示例 1:

输入:grid = [[1,0,1],[0,0,0],[1,0,1]]
输出:2
解释: 
海洋单元格 (1, 1) 和所有陆地单元格之间的距离都达到最大,最大距离为 2。
class Solution {
public:
    static constexpr int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    static constexpr int MAX_N = 100 + 5;

    struct Coordinate {
        int x, y, step;
    };

    int n, m;
    vector<vector<int>> a;

    bool vis[MAX_N][MAX_N];

    int findNearestLand(int x, int y) {
        memset(vis, 0, sizeof vis);
        queue <Coordinate> q;
        q.push({x, y, 0});
        vis[x][y] = 1;
        while (!q.empty()) {
            auto f = q.front(); q.pop();
            for (int i = 0; i < 4; ++i) {
                int nx = f.x + dx[i], ny = f.y + dy[i];
                if (!(nx >= 0 && nx <= n - 1 && ny >= 0 && ny <= m - 1)) {
                    continue;
                }
                if (!vis[nx][ny]) {
                    q.push({nx, ny, f.step + 1});
                    vis[nx][ny] = 1;
                    if (a[nx][ny]) {
                        return f.step + 1;
                    }
                }
            }
        }
        return -1;
    }
    
    int maxDistance(vector<vector<int>>& grid) {
        this->n = grid.size();
        this->m = grid.at(0).size();
        a = grid;
        int ans = -1;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                if (!a[i][j]) {
                    ans = max(ans, findNearestLand(i, j));
                }
            }
        }
        return ans;
    }
};

这道题目先贴这里,最近还没看图论,

4、现有一个能产生随机数字1-5的函数,请写出一个能产生随机数字1-7的函数

#include<iostream>
#include<ctime>
#include<cstdlib>

int GenerateRandom5() {
    return (rand() % 5) + 1;
}

int GenerateRandom7() {
    int x = ~(1<<31);
    while(x > 21) {
        x = 5 * (GenerateRandom5() - 1) + GenerateRandom5();
    }
    return x % 7 + 1;
}

int main() {
    srand(static_cast<unsigned int>(time(0)));  
    // 生成并输出一个1到7之间的随机数  
    int randomNumber = GenerateRandom7();  
    std::cout << "Random number between 1 and 7: " << randomNumber << std::endl;  
    return 0;  
}

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

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

相关文章

我的保研材料全部损坏了!这个压缩包文件格式未知或数据已经被损坏不可预料的压缩文件末端

求助各位友友&#xff0c;我的保研材料全部没了&#xff01; 之前为了清理D盘&#xff0c;把之前保研期间准备的几个G的材料全部压缩放在了U盘&#xff0c;但是现在却损坏打不开了&#xff0c;之前为了省事也没有添加过“恢复记录”&#xff01;&#xff01;&#xff01; 先声…

什么是状态压缩DP???

1. 引言 相信大家已经对普通的01背包或者其他背包问题已经很熟练了&#xff0c;但是有时候我们去解决NP问题&#xff08;指数级别的复杂度&#xff0c;比如N&#xff01;&#xff09;&#xff0c;时间复杂度就会非常之大 所以&#xff0c;这个时候我们需要寻找更加优化的方法…

数据结构算法 - 数组 Array

一、概念 结构是一种线性表&#xff08;元素排列成直线的结构&#xff09;&#xff0c;创建数组会开辟一块连续的内存空间&#xff0c;长度固定无法更改&#xff0c;元素可以重复且只能是同一种类型&#xff08;Object类型数组除外&#xff09;。优点查询快&#xff1a;由于元…

对话奇酷网络董事长吴渔夫: 迟到的游戏公司会被AI浪潮卷入海底

“ 迟到的游戏公司会被无形的 AI 浪潮卷入海底。” 整理 | 梦婕 编辑 | 云舒 出品&#xff5c;极新 2024年3月4日&#xff0c;在极新与吴渔夫的对话中&#xff0c;吴渔夫多次呼吁“全力拥抱AI”。在这场AI浪潮中&#xff0c;作为中国网游的先锋&#xff0c;他带着 25 年“中…

外包干了1个月,技术明显进步。。。

我是一名大专生&#xff0c;自19年通过校招进入湖南某软件公司以来&#xff0c;便扎根于功能测试岗位&#xff0c;一晃便是近四年的光阴。今年8月&#xff0c;我如梦初醒&#xff0c;意识到长时间待在舒适的环境中&#xff0c;已让我变得不思进取&#xff0c;技术停滞不前。更令…

GraalVM:新一代跨语言虚拟机的崛起

有朋友后台私信让聊聊GraalVM&#xff0c;目前这玩意我只自己尝鲜搞过&#xff0c;没搞过线上&#xff0c;后续有机会会补充个实践 其实&#xff0c;随着信息技术的快速发展&#xff0c;编程语言多样化已成为软件开发领域的常态。为了满足不同编程语言间的互操作性和性能需求&a…

Java特性之设计模式【组合模式】

一、组合模式 概述 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次。这种类型的设计模式属于结构型模式&#x…

隐私计算实训营学习一:数据可信流通,从运维信任到技术信任

文章目录 一、数据可信流通二、数据可信流通的技术信任基础三、技术信任开启数据密态时代&#xff0c;保障广域数据可信流通 一、数据可信流通 可信数据流通体系&#xff1a;数据二十条第一次明确提出可信流通&#xff0c;建立数据来源可确认、使用范围可界定、流通过程可追溯…

金融知识分享系列之:支撑阻力

金融知识分享系列之&#xff1a;支撑阻力 一、支撑阻力原理二、支撑阻力作用1.识别市场资金的预期2.作为入场和平仓的重要参考 三、寻找支撑阻力四、延伸思考五、支撑阻力总结 一、支撑阻力原理 支撑阻力核心要素&#xff1a; 锚定效应订单驱动 支撑阻力原理&#xff1a; 市…

在DevEco Studio中第一次使用网络图片不显示问题

当我们新建项目 第一次使用网络图片 没有显示时 加这段代码就可以了 如果刷新图片还是没有显示 就重启编辑器。 "requestPermissions": [{"name": "ohos.permission.INTERNET"}],

>>Vue3+pinia+echarts等实现疫情可视化大图

一.>>前言 1.这个项目是在小满实战篇可视化&#xff08;第九章-饼图&#xff09;_哔哩哔哩_bilibili 这一系列课程为基础来做的&#xff0c;真的很感谢小满老师&#xff0c;讲的内容干货满满&#xff0c;暂时解决了手上没有项目的难题。大家可以去观摩一下他的优质课程。…

WT32-ETH02 plus 串口转以太网开发,WT32-ETH01网关开发板升级款!

广受欢迎的WT32-ETH01网关开发板迎来了升级。 就是这款启明云端新推出的嵌入式串口转以太网开发板——WT32-ETH02 plus。应广大客户的需求&#xff0c;在WT32-ETH01的基础上增加了POE供电&#xff0c;可广泛应用于智能家居和网关等应用。开发板搭载2.4GHz Wi-Fi和蓝牙双模的SO…

PyTorch 深度学习(GPT 重译)(五)

十二、通过指标和增强改进训练 本章涵盖 定义和计算精确率、召回率以及真/假阳性/阴性 使用 F1 分数与其他质量指标 平衡和增强数据以减少过拟合 使用 TensorBoard 绘制质量指标图 上一章的结束让我们陷入了困境。虽然我们能够将深度学习项目的机制放置好&#xff0c;但实…

shell编程入门(笔记)

1、shell编程基础&#xff1a; 1.1、shell的解释执行功能 1.2、什么是shell程序&#xff1f; 1.3、shell程序编程的主要内容 1.4、shell程序的第一行 1.5、变量要求 1.6、环境变量和只读变量 1.7、位置参量 1.8、位置参量列表 1.9、数组 2、输入输出 2.1、输入-read命令 2.2…

Linux命令du详解

目录 du是什么&#xff1f;du 命令的格式常用的选项速查选项详解及例子du [目录/文件]-a-d-h-s-c--timeformatfull-isolong-isoiso -t 或 --thresholdSIZE --excludePATTERN--si-0 或--null--apparent-size-B size 或--block-sizesize-b 或--bytes-k-m-L 或 --dereference-l 或…

C++类和对象基础

目录 类的认识 访问限定符&#xff1a;public(公有)&#xff0c;protected(保护)&#xff0c;private(私有)。 类的两种定义方式: 类的实例化&#xff1a; 封装&#xff1a; 类的对象大小的计算&#xff1a; 类成员函数的this指针&#xff1a; C语言是面向过程的语言&am…

洛谷_P1605 迷宫_python写法

P1605 迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) dfs代码&#xff1a; 这道题也是简单的深搜问题&#xff0c;但是要注意地图的原点记得要初始化maps[sx-1][sy-1] 1 n, m, t map(int,input().split()) sx, sy, fx, fy map(int,input().split()) maps [[0 for _ i…

Java反射:深入解析与实战应用

在Java编程的世界中&#xff0c;反射机制是一种强大的工具&#xff0c;它允许程序在运行时检查和操作类、接口、字段和方法的信息。通过反射&#xff0c;我们可以实现许多高级功能&#xff0c;如动态代理、框架设计等。本文将深入探讨Java反射的基本概念、使用方法以及在实际项…

APP稳定性测试工具:Monkey

一、Monkey 简介 Monkey 是一款 app 的自动化测试工具&#xff0c;monkey 是猴子的意思&#xff0c;所以从原理上说&#xff0c;它的自动化测试就类似猴子一样在软件上乱敲按键&#xff0c;猴子什么都不懂&#xff0c;就爱捣乱。Monkey 原理也是类似&#xff0c;通过向系统发送…

多模态大语言模型的 (R) 演变:调查

目录 1. Introduction2. 赋予LLMs多模态能力2.1 大型语言模型2.2 视觉编码器2.3 视觉到语言适配器2.4 多模式训练 3. 使用 MLLM 处理视觉任务 连接文本和视觉模式在生成智能中起着至关重要的作用。因此&#xff0c;受大型语言模型成功的启发&#xff0c;大量研究工作致力于多模…