寒心,成立 25 年的车企迎来了首次裁员

news2024/12/26 21:23:08

车企

随着春节假期结束,各行各业也正式复工,但车企却未能迎来属于它们的"新年新气象"。

早在年前(12 月),就有新闻爆出,知名传统车企「广汽本田」为了加快转向电动车市场,宣布解雇中国合资企业广汽本田下的 900 名员工。

广汽本田
广汽本田

据悉,这是因为传统车企在 2023 前 10 个月的销量总计同比下降 18.5% 所做的决定。

那是否只要是站在"风口"的新能源车企,就活得很好呢?

也不是。

燃油车的销量持续下降,除了有电动车崛起的直接因素,当中还有消费降低,经济萎靡的宏观因素。而后者会对所有车企,甚至是消费品行业带来实则性的挑战。

年初九,当别人还沉浸在春节假期或开工红包的喜悦的时候,新能源造车新势力高合汽车宣布停工停产 6 个月。

高合汽车
高合汽车

取消年终奖、全员降薪、停工停产(仅发基本工资),高合汽车选择了大面积裁员的另一条道路。

高合汽车创始人、董事长兼 CEO 丁磊,职业初期在上汽担任高管,从业时间超过 20 年,他本人也亲身经历了中国汽车行业逐渐变强的全过程。

带着这种"天生骄傲"的履历,同时又手握丰富的行业资源。

高合汽车成立时就将自身定位为"高端电动车品牌",首款车的最高售价达到 80 万,一度被视为在电动车高端市场突破 BBA 封锁的先行者。

但可惜那个「只要把车造出来就不愁卖的时代」早就过去了。

现在新能源领域领跑的几家企业,依靠的并非只是单一的造车能力,还包括 软件技术、服务 和 产品力。

前者(造车能力)决定车企能否开得起来,而后者(软件技术/服务/产品力)则是决定车企能否活下去。

那些真正承担起新势力变革角色的车企,都有着它们的鲜明特点。传统车企虽然手握更多的造车资源,但如果只是简单宣布产能调整,并不能实现对新能源造车新势力们的"降维打击"。

因此,我并不看好广汽本田的这次变革。

传统车企想要挤进赛道,需要依托于更加激进的改革方案。

...

回归主线。

都说到了新能源车企了,那就来一道「蔚来」面试原题。

题目描述

平台:LeetCode

题号:792

给定字符串 s 和字符串数组 words, 返回 words[i] 中是 s 的子序列的单词个数 。

字符串的子序列是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是""),而不改变其余字符的相对顺序。

例如, “ace”“abcde” 的子序列。

示例 1:

输入: s = "abcde", words = ["a","bb","acd","ace"]

输出: 3

解释: 有三个是 s 的子序列的单词: "a""acd""ace"

示例 2:

输入: s = "dsahjpjauf", words = ["ahjpjau","ja","ahbwzgqnuk","tnmlanowax"]

输出: 2

提示:

  • words[i]s 都只由小写字母组成。

预处理 + 哈希表 + 二分

朴素判定某个字符串是为另一字符串的子序列的复杂度为 ,对于本题共有 个字符串需要判定,每个字符串最多长为 ,因此整体计算量为 ,会超时。

不可避免的是,我们要对每个 进行检查,因此优化的思路可放在如何优化单个 的判定操作。

朴素的判定过程需要使用双指针扫描两个字符串,其中对于原串的扫描,会有大量的字符会被跳过(无效匹配),即只有两指针对应的字符相同时,匹配串指针才会后移。

我们考虑如何优化这部分无效匹配。

对于任意一个 而言,假设我们当前匹配到 位置,此时我们已经明确下一个待匹配的字符为 ,因此我们可以直接在 s 中字符为 的位置中找候选。

具体的,我们可以使用哈希表 maps 进行预处理:以字符 为哈希表的 key,对应的下标 集合为 value,由于我们从前往后处理 s 进行预处理,因此对于所有的 value 均满足递增性质。

举个 🌰 : 对于 s = abcabc 而言,预处理的哈希表为 {a=[0,3], b=[1,4], c=[2,5]}

最后考虑如何判定某个 是否满足要求:待匹配字符串 w 长度为 m,我们从前往后对 w 进行判定,假设当前判待匹配位置为 ,我们使用变量 idx 代表能够满足匹配 的最小下标(贪心思路)。

对于匹配的 字符,可以等价为在 map[w[i]] 中找到第一个大于 idx 的下标,含义在原串 s 中找到字符为 w[i] 且下标大于 idx 的最小值,由于我们所有的 map[X] 均满足单调递增,该过程可使用「二分」进行。

Java 代码:

class Solution {
    public int numMatchingSubseq(String s, String[] words) {
        int n = s.length(), ans = 0;
        Map<Character, List<Integer>> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            List<Integer> list = map.getOrDefault(s.charAt(i), new ArrayList<>());
            list.add(i);
            map.put(s.charAt(i), list);
        }
        for (String w : words) {
            boolean ok = true;
            int m = w.length(), idx = -1;
            for (int i = 0; i < m && ok; i++) {
                List<Integer> list = map.getOrDefault(w.charAt(i), new ArrayList<>());
                int l = 0, r = list.size() - 1;
                while (l < r) {
                    int mid = l + r >> 1;
                    if (list.get(mid) > idx) r = mid;
                    else l = mid + 1;
                }
                if (r < 0 || list.get(r) <= idx) ok = false;
                else idx = list.get(r);
            }
            if (ok) ans++;
        }
        return ans;
    }
}

TypeScript 代码:

function numMatchingSubseq(s: string, words: string[]): number {
    let n = s.length, ans = 0
    const map = new Map<StringArray<number>>()
    for (let i = 0; i < n; i++) {
        if (!map.has(s[i])) map.set(s[i], new Array<number>())
        map.get(s[i]).push(i)
    }
    for (const w of words) {
        let ok = true
        let m = w.length, idx = -1
        for (let i = 0; i < m && ok; i++) {
            if (!map.has(w[i])) {
                ok = false
            } else {
                const list = map.get(w[i])
                let l = 0, r = list.length - 1
                while (l < r) {
                    const mid = l + r >> 1
                    if (list[mid] > idx) r = mid
                    else l = mid + 1
                }
                if (r < 0 || list[r] <= idx) ok = false
                else idx = list[r]
            }
        }
        if (ok) ans++
    }
    return ans
}

Python3 代码:

class Solution:
    def numMatchingSubseq(self, s: str, words: List[str]) -> int:
        dmap = defaultdict(list)
        for i, c in enumerate(s):
            dmap[c].append(i)
        ans = 0
        for w in words:
            ok = True
            idx = -1
            for i in range(len(w)):
                idxs = dmap[w[i]]
                l, r = 0, len(idxs) - 1
                while l < r :
                    mid = l + r >> 1
                    if dmap[w[i]][mid] > idx:
                        r = mid
                    else:
                        l = mid + 1
                if r < 0 or dmap[w[i]][r] <= idx:
                    ok = False
                    break
                else:
                    idx = dmap[w[i]][r]
            ans += 1 if ok else 0
        return ans
  • 时间复杂度:令 ns 长度, mwords 长度, l = 50 长度的最大值。构造 map 的复杂度为 ;统计符合要求的 的数量复杂度为 。整体复杂度为
  • 空间复杂度:

我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉

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

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

相关文章

洛谷 P1075 [NOIP2012 普及组] 质因数分解

参考代码and代码解读 #include<bits/stdc.h>//万能头文件 using namespace std; int main() { int n; cin>>n;//输入这个数 for (int i2;i<n;i)//用for循环查找最小的因数 if (n%i0)//如果i是n的因数 { cout<<n/i…

如何在STM32微控制器中使用外部SDRAM

如何在STM32微控制器中使用外部SDRAM STM32微控制器因其卓越的性能、灵活的内存配置选项以及广泛的应用领域而受到工程师们的青睐。在许多高级应用中&#xff0c;如图像处理、大数据分析和复杂算法运算&#xff0c;内部存储资源可能不足以满足需求。这时&#xff0c;通过添加外…

Centos安装图形化桌面环境

1.使用root远程登录最小化安装的虚拟机 2.执行命令yum groupinstall "X Window System" 这是安装窗口系统 3.执行命令yum grouplist" 检查安装的软件可可以安装的软件 4.执行命令yum groupinstall "Server with GUI" 这是安装图形化界面 5.执行命令sy…

C#写的一个计算DCI-P3色域和SRGB的小工具

文章最后附带分享链接与提取码 方便需要测试屏幕的小伙伴&#xff0c;只需要输入RGB就能得到覆盖率与比率&#xff0c;W计算色温&#xff0c;不测也要写上&#xff0c;不然会报错 链接&#xff1a;https://pan.baidu.com/s/1wdmAwmwiXjNvn1tGsvy0HA 提取码&#xff1a;1234

NAS系统折腾记 | 黑群晖系统快速制作英特尔核显补丁支持硬解

常见的群晖机器&#xff0c;例如 DS920&#xff0c;DS918&#xff0c;系统内核一直是 4.4 的&#xff0c;而这个内核自带的核显驱动最高支持到 9 代&#xff0c;支持的CPU型号分别是J3455&#xff08;DS918&#xff09;和J4155&#xff08;DS920&#xff09;。而目前DIY搭建NAS…

BioTech - 大型蛋白质复合物的组装流程 (CombFold)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136187314 CombFold是用于预测大型蛋白质复合物结构的组合和分层组装算法&#xff0c;利用AlphaFold2预测的亚基之间的成对相互作用。CombFold的组…

golang实现图片上传

实现个图片上传&#xff0c;记录一下 我这里是采用的调试工具&#xff0c;apipost去直接上传的&#xff0c;参数值选择file即可 上传的图片&#xff0c;两种方式&#xff0c;一是用原来的文件名&#xff0c;直接file.Filename即可。 func Upload(c *gin.Context) {file, _ : …

基于SSM实现的人事管理系统(源代码+数据库脚本)

文章目录 系统介绍技术选型成果展示账号地址及其他说明源码获取 系统介绍 系统演示 微信视频号&#xff1a;【全栈小白】查看视频 基于SSM实现的人事管理系统使用JavaEE开发&#xff0c;基于SpringMVCMybatis框架&#xff0c;该项目包含了用户管理、部门管理、职位管理、员工…

为什么在MOS管开关电路设计中使用三极管容易烧坏?

MOS管作为一种常用的开关元件&#xff0c;具有低导通电阻、高开关速度和低功耗等优点&#xff0c;因此在许多电子设备中广泛应用。然而&#xff0c;在一些特殊情况下&#xff0c;我们需要在MOS管控制电路中加入三极管来实现一些特殊功能。然而&#xff0c;不同于MOS管&#xff…

Sora:视频生成模型作为世界模拟器

我们探索了视频数据上生成模型的大规模训练。具体来说&#xff0c;我们在可变持续时间、分辨率和长宽比的视频和图像上联合训练文本条件扩散模型。我们利用了一个在视频和图像潜在码的时空块上操作的变压器架构。我们规模最大的模型 Sora 能够生成一分钟的高保真视频。我们的结…

mybitsPlus乐观锁@Version案例测试,发现有失效的情况

mybitsPlus乐观锁Version案例测试&#xff0c;发现有失效的情况 一、案例 Data TableName("NEWTABLE_TEST") ApiModel(value "BusBalance对象", description "额度表") public class NewTableTest {private static final long serialVersion…

Servlet中的请求与响应

Request和Response 1.Request和Response的概述2.Request对象2.1 Request继承体系2.2 Request获取请求数据2.3 解决post请求乱码问题 *2.4 Request请求转发(-&#xff0c;*)2.5 request的生命周期 3.HTTP响应详解(理解)1.使用抓包查看响应报文协议内容2.HTTP响应报文协议介绍 4.…

[notice] A new release of pip is available: 23.2.1 -> 24.0

翻译之后&#xff1a;〔通知〕新版本的pip可用&#xff1a;23.2.1->24.0 就是说&#xff0c;你的pip版本需要从当前的 23.2.1 升级到最新版本 24.0&#xff0c;执行如下命令&#xff1a; cmd命令以管理员身份进入目录 ${Python}\Python3.12.1\Scripts下&#xff0c;执行 p…

分享金媒v10.3开源系统中CRM线下客户管理系统使用指南和小程序上架细分流程

本系统金媒婚恋开源系统v10.3也叫择爱系统目前最新版全开源包括OElove最新版10.0都是最新但是很多客户不动CRM使用流程我就按照流程给大家介绍下如果大家对程序感兴趣也可以分享给你看我昵称里可以Q我&#xff0c;请注明&#xff1a;CSDN网友 ●本系统红娘分两种&#xff0c;一…

杂题——1028: [编程入门]自定义函数求一元二次方程

题目描述 求方程 的根&#xff0c;用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根&#xff0c;并输出结果。从主函数输入a、b、c的值。 输入格式 a b c 输出格式 x1? x2? 样例输入 4 1 1 样例输出 x1-0.1250.484i x2-0.125-0.484i 分析&#xff1a; 注意输出的格式和…

论文阅读——SqueezeSAM

SqueezeSAM: User-Friendly Mobile Interactive Segmentation 比SAM更小&#xff0c;更快。 框架&#xff1a; 使用的U型结构 使用BatchNorm而不是LayerNorm节省计算&#xff1b; 对于用户点击和框&#xff0c;单独作为通道&#xff0c;前融合和后融合&#xff08;sam只有后融…

QML | 信号和信号处理器特性

信号和信号处理器特性 很多时候,应用程序的用户界面组件需要相互通信。例如,一个按钮需要知道用户是否进行了单击:当用户单击后,它可能会更改颜色来指示它状态的改变,或者执行一些逻辑代码实现一定的功能。同Qt一样,QML包含了相似的信号和信号处理器机制。 信号是发出事件…

惠尔顿安全审计系统任意文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

每日OJ题_二叉树dfs③_力扣814. 二叉树剪枝

目录 力扣814. 二叉树剪枝 解析代码 力扣814. 二叉树剪枝 814. 二叉树剪枝 难度 中等 给你二叉树的根结点 root &#xff0c;此外树的每个结点的值要么是 0 &#xff0c;要么是 1 。 返回移除了所有不包含 1 的子树的原二叉树。 节点 node 的子树为 node 本身加上所有 n…

读书笔记-增强型分析:AI驱动的数据分析、业务决策与案例实践

目录 前言 运用人工智能技术&#xff0c;可以使人类社会变得更美好。人们总是期待产品更适合、服务更贴心、生活更便利。在实践中&#xff0c;技术给企业赋能&#xff0c;企业通过优质的产品和服务满足社会&#xff0c;提升人类福祉。很多金融企业已经开始尝试向潜在客户推送…