专升本的硕士学历被歧视了。。

news2024/11/18 4:44:42

fc1477510eaa8c5a86a56dd08e7359f0.gif

精品推荐:

《征服数据结构》,《经典图论算法》

在牛客网上看到一个帖子,一网友说之前已经签了一家公司,现在又找了一家公司,并且这家公司也发了offer,让他和上一家公司解约。结果他和上一家公司解约完之后,这家公司发现他是专升本的,又把offer给撤回了,挺无语的。

6988044a72fb66d63ded81b2f176a299.png

4b0e484802cf4ced12e06ded30cb9aa1.jpeg

87207557085b38bb5c6def16731d231e.jpeg

网友评论:

01a0f4d684d1d98687e02644014a7101.png

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第17:电话号码的字母组合。这题昨天我们刚讲过,因为这题有两种常见的解决思路,一种是DFS,一种是BFS,我们昨天讲的是DFS,今天讲下使用BFS怎么实现。

问题描述

来源:LeetCode第17题

难度:中等

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

836b9103c2cb4c3d5ec9e3f5f6f1ca1d.png

示例1:

输入:digits = "23"

输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

  • 字符串中的字符

问题分析

昨天我们讲这题《电话号码的字母组合》使用的是DFS,把它的实现过程看作是一棵树,如下图所示。

36981acc0fd625782203c6fbbbf658e3.png

我们知道树的遍历除了DFS以外还可以使用BFS,树的BFS遍历就是一层一层的遍历,一般都会配合着队列来使用,如下图所示。

494ac1778701b8b9c92b7662b5d04289.png

实际上这题给的并不是一棵树,这棵树只是我们想象的,那我们怎么确定遍历到叶子节点了呢,实际上很简单,如果有 n 个数字,那么叶子节点字符串的长度就应该是 n 。

JAVA:

public List<String> letterCombinations(String digits) {
    LinkedList<String> ans = new LinkedList<>();
    if (digits == null || digits.isEmpty())
        return ans;
    String[] refs = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    ans.add("");// 根节点是空的,入队。
    while (ans.peek().length() != digits.length()) {
        String remove = ans.poll();// 出队
        String ref = refs[digits.charAt(remove.length()) - '0'];// 根据数字查找对应字符串。
        // 相当于把当前节点的所有子节点入队。
        for (int i = 0; i < ref.length(); i++) {
            ans.add(remove + ref.charAt(i));// 入队
        }
    }
    return ans;
}

C++:

public:
    vector<string> letterCombinations(string digits) {
        if (digits.empty())
            return {};
        queue<string> q;// 队列
        string refs[] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        q.emplace("");// 根节点是空的,入队。
        while (q.front().length() != digits.length()) {
            string remove = q.front();
            q.pop();// 出队
            // 取出数字对应的字符串,用remove与该字符串的每一个字符组合。
            string ref = refs[digits[remove.length()] - '0'];
            for (int i = 0; i < ref.length(); i++)
                q.push(remove + ref[i]);// 入队
        }
        // 把队列转vector。
        vector<string> v;
        while (!q.empty()) {
            v.push_back(q.front());
            q.pop();
        }
        return v;
    }

C:

char **letterCombinations(char *digits, int *returnSize) {
    *returnSize = 0;
    char **ans = malloc(150 * sizeof(char *));
    if (strlen(digits) == 0)
        return ans;
    char **q = malloc(300 * sizeof(char *));// 队列
    int left = 0, right = 0;// 队列的范围,左闭右开
    char refs[][5] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    q[right++] = calloc(1, sizeof(char));// 空字符串
    while (strlen(q[left]) != strlen(digits)) {
        char *remove = q[left++];// 出队
        // 取出数字对应的字符串,用remove与该字符串的每一个字符组合。
        char *ref = refs[digits[strlen(remove)] - '0'];
        for (int i = 0; i < strlen(ref); i++) {
            q[right] = calloc(5, sizeof(char));
            strcpy(q[right], remove);
            q[right][strlen(remove)] = ref[i];
            right++;
        }
    }
    for (int i = left; i < right; ++i) {
        ans[*returnSize] = malloc(strlen(q[i]) + 1);
        strcpy(ans[(*returnSize)++], q[i]);
    }
    // 内存释放
    for (int i = 0; i < right; ++i)
        free(q[i]);
    free(q);
    return ans;
}

Python:

def letterCombinations(self, digits: str) -> List[str]:
    if not digits:
        return []
    d = deque()
    refs = ["", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
    d.append("")  # 根节点是空的,入队。
    # 比如abc和def,先把abc个字符入队,然后再分别出队和def各字符组合。
    while len(d[0]) != len(digits):
        remove = d.popleft()  # 出队
        # 取出数字对应的字符串,用remove与该字符串的每一个字符组合。
        ref = refs[ord(digits[len(remove)]) - ord('0')]
        for i in range(0, len(ref)):
            d.append(remove + ref[i])
    return list(d)

c578896faff2c9c5e56339310365980c.gif

笔者简介

博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档。

  • 《征服数据结构》目录

  • 《经典图论算法》目录

  • 我的新书《算法秘籍》出版了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FENDI CLUB精酿啤酒中原麦汁浓度的高低有何区别?

关于精酿啤酒&#xff0c;有两个关键数据&#xff0c;一个是原麦汁浓度&#xff0c;一个是酒精度。酒精度无非是含酒精的高低&#xff0c;但原麦汁浓度又是什么呢&#xff1f;另外精酿啤酒中原麦汁浓度有高有低&#xff0c;究竟有哪些区别呢&#xff1f; 原麦汁浓度是指啤…

【面试八股总结】MySQL索引(二):B+树数据结构、索引使用场景、索引优化、索引失效

参考资料&#xff1a;小林coding、阿秀 一、为什么InnoDB采用B树作为索引数据结构&#xff1f; B 树是一个自平衡多路搜索树&#xff0c;每一个节点最多可以包括 M 个子节点&#xff0c;M 称为 B 树的阶&#xff0c;所以 B 树就是一个多叉树。 B 树与 B 树的差异&#xff1a;…

为何选择 MindMapper

MindMapper是一款专业的可视化思维导图软件&#xff0c;通过智能绘图方法&#xff0c;在管理信息和 处理工作流程中&#xff0c;帮助提高组织、审查、合作、分享和交流能力。 企业创造力 在企业界&#xff0c;MindMapper思维导图软件可以提高生产力和沟通效果&#xff0c;以及…

react路由参数path不再支持正则?比较v5和v6写法的差异性

文章目录 前言v5方式&#xff1a;直接在path参数中&#xff0c;写入对应正则&#xff08;1&#xff09;代码详细注释如下&#xff08;2&#xff09;页面输出如下&#xff0c;会出现undefined的情况 v6方式: 在路由对象中配置&#xff0c;但只可配动态路由&#xff0c;不可用正则…

FTP原理

一、FTP工作原理 FTP是一种文件传输协议&#xff0c;用来上传和下载&#xff0c;实现远程共享文件。 工作原理 &#xff1a; 端口号21号端口&#xff0c;用于互联网上的控制文件的双向传输 是一个应用程序。工作在TCP/IP。 连接时同时处理服务器和客户端的连接命令和数据传输&…

CANOE制造dll文件,以及应用dll文件

1、使用canoe自带的capl dll 2、然后使用Visual Studio 2022 打开项目 3、项目打开后修改下项目属性 4、修改capldll.cpp文件 4.1 添加的内容 void CAPLEXPORT far CAPLPASCAL appSum(long i, long j, long* s){*s i j;} {"sum", (CAPL_FARCALL)appSum, "…

只出现一次的数字II ---- 位运算

题目链接 题目: 分析: 对于只出现一次的数字, 他的任意一个bit位, 可能是0或1对于其余出现3次的数字, 假设有3n个数, 那么他们的任意一个bit相加的和可能是3n个0或3n个1那么对于数组中的全部数字的任意一个bit位之和共有三种情况: 3n个1 1 3n13n个0 1 13n个1 0 3n3n个0…

海外媒体发稿:打造个人品牌的2个必备宣发套餐-华媒舍

个人品牌在现代社会中扮演着关键的角色&#xff0c;它可以帮助我们在职场竞争中脱颖而出。但是&#xff0c;要想打造一个成功的个人品牌&#xff0c;并不是一件容易的事情。在这篇文章中&#xff0c;我将为你介绍两个必备的宣发套餐&#xff0c;让你成为行家。 1. 社交媒体宣发…

HR人才测评,如何做营销人员岗位素质测评?

营销人员是企业中的重要角色&#xff0c;他们直接负责企业产品或服务的销售和推广&#xff0c;是企业中最直接影响销售业绩的人才之一。因此&#xff0c;营销人员的基本素质测评非常重要&#xff0c;能够有效评估营销人员的能力和潜力&#xff0c;为企业招聘和培养优秀的营销人…

企业如何进行快递运费对账?

在电子面单寄件取代手写纸质面单之后&#xff0c;加上月结寄件模式的推行&#xff0c;企业快递运费对账&#xff0c;成了行政的一个难题...... 早期的手写纸质面单寄件&#xff0c;企业行政或者财务相关人员&#xff0c;遵循寄前审批&#xff0c;寄后报销的原则进行对账。随着电…

Science Robotics 自然脊髓反射回路应用在假肢手的感觉运动控制

恢复截肢者的感觉反馈对于改善假肢控制是必要的&#xff0c;但实现这一目标的几种非侵入性技术在认知上要求很高。用于假肢控制的感觉反馈通常基于在特定类型的感觉刺激中编码感觉信息&#xff0c;用户通过解析来调整假体的控制。然而&#xff0c;在生理条件下&#xff0c;从周…

深度神经网络——什么是线性回归?

线性回归是一种用于预测或可视化的算法 两个不同特征/变量之间的关系。 在线性回归任务中&#xff0c;要检查两种变量&#xff1a; 因变量和自变量。 自变量是独立的变量&#xff0c;不受其他变量的影响。 随着自变量的调整&#xff0c;因变量的水平将会波动。 因变量是正在研究…

Nginx实战:日志打印自定义请求头

nginx的日志可以打印很多内容&#xff0c;但是有时候自定义的请求头该怎么打印呢&#xff1f;像下面这种场景&#xff1a; 其实很简单&#xff0c;设置日志打印格式log_format的时候&#xff0c;自定义的请求头用 【$http_自定义请求头名】 的格式就可以打印出来 例如你的自定义…

分库分表、读写分离--ShardingJDBC

1. 项目准备 1.1 建立数据库表 建立user_manage数据库&#xff0c;在该库中建立1张表app_user用来做分库前的测试&#xff0c;另外建12张按月份命名的表app_user_2024XX用来做分库。 CREATE DATABASE IF NOT EXISTS user_manage CHARACTER SET utf8 COLLATE utf8_general_ci…

【Python Cookbook】S1E08 在两个字典中寻找相同点

目录 问题解决方案讨论 问题 在两个字典中&#xff0c;如果我们想要找到其中相同的地方&#xff0c;比如相同的键、相同的值等。 解决方案 考虑以下两个字典以及其中内容&#xff1a; a {x: 1,y: 2,z: 3 }b {w: 10,x: 11,y: 2 }要找出这两个字典中的相同之处&#xff0c;…

Linux中部署MinIO

Linux中部署MinIO 下载MinIO可执行程序&#xff1a; wget https://dl.min.io/server/minio/release/linux-amd64/minio 添加执行权限&#xff1a; chmod x minio 创建存储目录&#xff0c;例如/data&#xff1a; mkdir -p /data 运行MinIO服务器&#xff0c;需要设置MIN…

数据结构与算法 :数据结构绪论,时间和空间复杂度 推导大O阶

各位少年 大家好 我是博主那一脸阳光&#xff0c;今天开始给大家分享数据结构&#xff0c;由于我个人当初学的时候是自学&#xff0c;并没有看培训机构的视频 所以接下来我分享的数据结构的内容&#xff0c;源头来自一本书叫做大话数据结构。顺便一提为了方面大家理解&#xff…

PHP框架开发的内容付费问答解惑系统附带seo优化

default默认是百度问答模板 sowenda是高仿360问答的。 soso模板是仿腾讯soso问答界面。 一套wap模板&#xff0c;仿天涯问答的手机版。 pc和wap模板后台设置里自由切换&#xff0c;还可以绑定手机独立二级域名。 强大的搜索功能&#xff0c;支持xunsearch全文检索&#xff0c;s…

springboot基本使用十二(PageHelper分页查询)

引入依赖&#xff1a; <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version> </dependency> 通个PageHelper.startPage(page,pageSize)方…

02 在虚拟机中安装Linux

课程目标 1、理解VMware中各个选项的作用 2、理解Linux安装过程中的各种选项和配置作用 课程实验 在VMware中安装centos7.9操作系统并确保网络通常 课堂引入 在看过了Linux桌面的各种炫酷的效果后(其实很多操作&#xff0c;在互动上并不比Windows和MacOS差多少)&#xff…