一张PPT就能让各大车企纷纷降价的「雷布斯」终于在昨晚进行了小米汽车的发布会!
整个发布会可以说是有着空前的盛况,作为国内最会营销的企业家,昨晚的发布会纷纷占据了微博、知乎、抖音等各大头条,几乎所有直播间在线人数都是10w+,这人气,绝对是大卖的节奏
在发布会上雷军细致地分析小米SU7的各项参数和配置,巧妙地设置了市场预期。
他不仅展现了小米汽车的高性价比,还强调了其在智能驾驶技术上与竞品特斯拉的对等甚至超越,从而成功吸引了大众的关注与讨论。
小米SU7举行发布会,标准版售价21.59万元。
据官方消息,小米汽车上市27分钟大定突破50000台。
发布会的精彩之处不止于此。
雷军在发布会中表达的不仅仅是小米进军汽车行业的雄心壮志,更是其对于「最后一次创业」的深情寄托。
他强调,小米汽车的目标是在未来10-15年内进入全球汽车制造商前五,显示了他对于这次跨界的决心与期望。
随着小米SU7正式加入竞争激烈的电动车市场,它不仅是小米集团向汽车行业的一次重要扩张,也标志着传统汽车和新能源汽车市场的一次重要转折。
最后:一直以来新能源车的销售纪录由特斯拉领先,2021 年初,售价 33.99 万起的国产 Model Y,开放预定 10 小时内收到了 10 万张订单。
按照小米汽车这个速度,打破特斯拉的纪录应该不难。
D哥朋友圈不是同学都晒出了订单截图,你定了吗?
下面是今日的大厂算法题
今日算法题,来自LeetCod e的第36题:外观数列,下面是我的算法思路及实现,让我们来看看吧。
# 算法题目
外观数列是一个整数 序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其理解为每一项都是对上一项中数字的计数和描述。 比如,序列中第五项为 111221,这是因为第四项是 1211,由一个 1、一个 2、两个 1 组成,因此计数描述为 "one 1, one 2, and two 1s",转换成数字序列即为 111221。
给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。
注意:整数序列以字符串形式给出,以便能够表达任意长度的数字序列。
# 引言
外观数列是一个经典的编程问题,通常用于练习字符串操作和循环逻辑。解决这个问题能帮助理解和掌握字符串的遍历、统计以及构建新字符串的方法。
# 算法思路
初始化:序列的第一项是 "1"。
构建序列:对于序列的第 n 项,从 n-1 项的描述中构建。
遍历前一项:从左到右遍历前一项的数字,统计连续相同数字的个数。
描述统计:每当遇到不同的数字或到达字符串末尾时,将之前的统计结果(个数和数字)添加到当前项的描述中。
更新序列:重复上述过程直到构建完第 n 项。
# 代码实现
JavaScript 实现
function countAndSay(n) {
if (n === 1) return"1";
let prev = "1";
for (let i = 2; i <= n; i++) {
let curr = "";
letcount = 1;
for (let j = 1; j < prev.length; j++) {
if (prev[j] === prev[j-1]) {
count++;
} else {
curr += count.toString() + prev[j-1];
count = 1;
}
}
curr += count.toString() + prev[prev.length - 1];
prev = curr;
}
return prev;
}
Java 实现
public String countAndSay(int n) {
if (n == 1) return"1";
String prev = "1";
for (int i = 2; i <= n; i++) {
StringBuilder curr = new StringBuilder();
int count = 1;
for (int j = 1; j < prev.length(); j++) {
if (prev.charAt(j) == prev.charAt(j-1)) {
count++;
} else {
curr.append(count).append(prev.charAt(j-1));
count = 1;
}
}
curr.append(count).append(prev.charAt(prev.length() - 1));
prev = curr.toString();
}
return prev;
}
Go 实现
funccountAndSay(n int)string {
if n == 1 {
return"1"
}
prev := "1"
for i := 2; i <= n; i++ {
var curr []byte
count := 1
for j := 1; j < len(prev); j++ {
if prev[j] == prev[j-1] {
count++
} else {
curr = append(curr, byte(count+'0'), prev[j-1])
count = 1
}
}
curr = append(curr, byte(count+'0'), prev[len(prev)-1])
prev = string(curr)
}
return prev
}
# 算法解析
这个问题虽然看起来简单,但它考验了对字符串的操作能力和循环控制逻辑。通过逐层构建外观数列,我们可以观察到字符串的变化规律,以及如何通过前一项推导出后一项。
# 示例和测试
输入:n = 1
输出:"1"
输入:n = 4
输出:"1211"
通过上述代码,我们可以计算任意 n ≤ 30 的外观数列的第 n 项。每次函数调用都将返回一个描述前一项的字符串。
# 总结
外观数列问题展示了如何通过字符串操作和简单的逻辑来实现复杂的序列构建。掌握这种方法对于解决实际编程中的字符串相关问题非常有帮助。此外,理解和实践这类问题还可以加深对递归和循环控制结构的理解。
热门推荐