大家好,我是苍何。
前两天极越原地解散的新闻大家都看了吧?当时看了消息,就觉得有很多想不通的点。
第一,这么大一公司,原地解散的速度堪称奇迹,说是资金链断裂,管理层应该早就有预感,养了那么多财务,夏总不可能提前不知晓吧?
其次,百度来查账,因账目有问题撤资,让其自身自灭吧,但是之前就已经付了几十亿了,如果我是百度,我都觉得亏死了。
账目有问题,正常的逻辑是什么?应该是严查管理层有没有贪污腐败情况吧,然后重新整顿,说白了,我得明白个所以然啊,好家伙,子公司直接原地解散,这不符合逻辑啊。
再者说估计百度也就缓缓,并没完全放弃,这不还有一个吉利爹妈?这下好了,极越直接来了个闪崩了😂
最后从我上家公司的情况来看,就我们那屁大点公司,解散都有个步骤,先是开始管理层各种开会,然后是开始小批量优化人员,下面是开始延迟发工资,再是延迟交社保,最后是优化 90% 的人员,依旧保留几个火种,直到现在高层还在找融资。
这才是正常的流程吧,一个小公司尚且如此,极越不可能不知道吧?所以,只能得出一个结论,他想逼宫百度和吉利这两位爹爹一把。
他直接原地解散,员工负面情绪很严重,自然而然会带动舆论,再加上媒体一免费宣传,好家伙,这舆论压力杠杠的。
这外人怎么看?有这么实力雄厚的两位老爹,还不给员工交社保,赔偿问题也没得到解决,还有车辆的售后和维保,这放谁也会把矛头指向百度和吉利啊。
这不,果真就有了很好的效果,百度和吉利下手了,12 月 13 号晚间,百度和吉利终于联合发布了关于极越汽车的声明:
第一时间解决员工社保缴纳、离职员工善后问题,
维护用户车辆正常使用、售后和维修保养。
推进其他事宜的合理合法解决。
虽说如此,极越汽车的整车业务关停不可避免,恢复不可能了,新时代的造车新势力终将体面落幕。
记得雷总曾说过,新能源汽车在国内最终将只会保留几个以内,面对激烈的竞争,究竟该何去何从,是其他车企需要慎重考虑的问题。
对于打工人吧,在工作抉择的时候,需要更加慎重考虑,不然,入职后哪天又原地解散就难搞了。
不过百度和吉利能站出来,兜底了大家最关心的几个问题,也算是大公司的社会责任了。
这么回头一看我前公司,也就是结晶组织,其背后的大靠山,就显得多少有些不尽责任,无论是供应商的欠款还是员工的赔偿,都还在拖着,干起了人中黄的事情,终将走不远。
我总觉得,新能源一定是未来的主打方向,但不一定是新能源汽车,也不一定是锂电池,新能源要解决的问题还是传统能源危机的问题,而电池也只是个能量的载体,汽车是一个应用领域,他们都还只是利用新能源而已,并没有创造能源。
相对,我更看好,新能源板块中的储能以及储氢技术,配合国家新型电力系统改革,分布式储能场景应用更加广泛。
所以,如果你还是在纠结行业,苍何觉得这是个不错的方向,别问我是怎么知道的,因为我就在这行业,哈哈哈。
好啦,关于极越将落幕,你有什么补充的呢?欢迎评论区讨论。
...
回归主题。
今天来一道极越软件开发曾经考过的一道面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:139
题目:单词拆分
给你一个字符串 s
和一个字符串列表 wordDict
作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s
,则返回 true。
注意:
不要求字典中的单词都使用完。
字典中的单词可以重复使用。
示例 1:
输入:
s = "leetcode", wordDict = ["leet", "code"]
输出:
true
解释:因为 "leetcode"
可以由 "leet"
和 "code"
拼接而成。
示例 2:
输入:
s = "applepenapple", wordDict = ["apple", "pen"]
输出:
true
解释:因为 "applepenapple"
可以由 "apple"
, "pen"
和 "apple"
拼接而成。注意,字典中的单词可以重复使用。
示例 3:
输入:
s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出:
false
提示:
1≤s.length≤3001 \leq s.length \leq 300
1≤wordDict.length≤10001 \leq wordDict.length \leq 1000
1≤wordDict[i].length≤201 \leq wordDict[i].length \leq 20
s
和wordDict[i]
仅由小写英文字母组成wordDict
中的所有字符串 互不相同
解题思路
本题可以用动态规划来解决。
思路概述
定义一个布尔数组
dp
,其中dp[i]
表示字符串s
的前 ii 个字符是否可以由字典wordDict
中的单词拼接而成。初始化:
dp[0] = true
,表示空字符串可以被组成。遍历字符串
s
的每个位置 ii,对于每个位置 ii,再检查之前的所有位置 jj:
如果
dp[j] == true
并且s[j:i]
在wordDict
中,则dp[i] = true
。
最终返回 dp[s.length]
。
动态规划转移方程
dp[i]=dp[j] and s[j:i]∈wordDict (0 <= j < i)dp[i] = dp[j] , \text{and} , s[j:i] \in wordDict , \text{(0 <= j < i)}
代码实现
Java代码
import java.util.*;
public class WordBreak {
public boolean wordBreak(String s, List<String> wordDict) {
// 创建一个哈希集合,用于快速查找单词是否在字典中
Set<String> wordSet = new HashSet<>(wordDict);
int n = s.length();
// dp[i] 表示 s 的前 i 个字符是否可以被拆分
boolean[] dp = new boolean[n + 1];
dp[0] = true; // 空字符串可以被拆分
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) {
// 检查 s[j:i] 是否在字典中,且 dp[j] 为 true
if (dp[j] && wordSet.contains(s.substring(j, i))) {
dp[i] = true;
break;
}
}
}
return dp[n];
}
public static void main(String[] args) {
WordBreak solution = new WordBreak();
List<String> wordDict = Arrays.asList("leet", "code");
System.out.println(solution.wordBreak("leetcode", wordDict)); // true
}
}
C++代码
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
bool wordBreak(string s, vector<string>& wordDict) {
// 使用哈希集合存储字典中的单词,方便快速查找
unordered_set<string> wordSet(wordDict.begin(), wordDict.end());
int n = s.size();
vector<bool> dp(n + 1, false);
dp[0] = true; // 空字符串可以被拆分
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) {
// 检查 s[j:i] 是否在字典中,且 dp[j] 为 true
if (dp[j] && wordSet.count(s.substr(j, i - j))) {
dp[i] = true;
break;
}
}
}
return dp[n];
}
int main() {
vector<string> wordDict = {"leet", "code"};
cout << wordBreak("leetcode", wordDict) << endl; // 输出 true
return 0;
}
Python代码
def word_break(s, word_dict):
# 将字典转为集合,方便查找
word_set = set(word_dict)
n = len(s)
dp = [False] * (n + 1)
dp[0] = True # 空字符串可以被拆分
for i in range(1, n + 1):
for j in range(i):
# 检查 s[j:i] 是否在字典中,且 dp[j] 为 True
if dp[j] and s[j:i] in word_set:
dp[i] = True
break
return dp[n]
# 测试
print(word_break("leetcode", ["leet", "code"])) # 输出 True
print(word_break("applepenapple", ["apple", "pen"])) # 输出 True
print(word_break("catsandog", ["cats", "dog", "sand", "and", "cat"])) # 输出 False
复杂度分析
时间复杂度: O(n2)O(n^2)
外层循环遍历字符串的长度 nn,内层循环最多也需要遍历 nn。
字符串截取操作 s[j:i]s[j:i] 的时间复杂度为 O(1)O(1)(语言实现优化)。
单词查找(使用哈希集合)为 O(1)O(1)。
空间复杂度: O(n)O(n)
使用了长度为 n+1n+1 的数组
dp
。
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【极越】,在后台回复【极越】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。
注意,后台(不是评论区,是后台)回复【极越】即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
就像大家之前回复【八股】一样。