大厂估值变化
最近「晚点 LatePost」整理了「15 大互联网公司近 6 年的市值/估值排名」榜单。
有意思的是:2024 年,是这 15 大互联网公司的首次全面盈利。
你可能会好奇,这些公司不都挺赚钱吗?为啥 2024 年才首次全面盈利?
因为 B 站一直在拖后腿(直到在 2024 年三季度才实现盈利 🤣🤣🤣
这榜单十分有趣。
腾讯从 2020 开始至今都是市值第一。这当中的主要原因,并不是腾讯特别地做对了什么,而是其他中概队友的普遍"掉队",从而实现的差距放大。
除腾讯外,榜单中的其他老牌大厂,在过去几年,都在一定程度的各自厮杀,抢夺对方的现有份额,而非制造增量,叠加外资出逃,以阿里为首的中概公司,估值基本都在单边下跌。
至于为什么只有腾讯可以在"不追求高增长"的路上稳步向前?
这和"护城河"的属性有关。腾讯有着「社交领域的巨大用户基数」和「真正多元的业务布局」。这些都是当年如日中天,占据全国 70% 以上的电商份额的阿里巴巴所不具有的。
当年阿里巴巴自诩的护城河,是支付宝的天量用户,以及淘宝天猫的海量订单,但这些成就更多只是因为"先发优势"而获得,一旦护城河与金钱直接挂勾,就没有真正所谓的"粘性",无论是用户还是商家,都会跟随"利益"而离开。
再从市值/估值的角度去看,从 2019 之后,真正称得上"逆势发展"的,只有三家公司:字节、拼多多、SHEIN。
拼多多优势是「绝对低价 + 消费者端倾斜」,在后疫情时代消费降级的大背景下,一下子就火起来了。
SHEIN 的优势是「产品快速上市 + 供应链把控」,大背景也是欧美市场的消费放缓,然后对下沉市场的快速响应,最多就是再叠加「国内制造对标海外制造」在速度上的降维打击。
两家公司的成功,不能说没有必然性,但时代背景的催化作用明显。
三家里面,字节的成功是含金量最高的。
只不过最近不是一个合适的聊字节的时机,后面有机会单独再开一期。
...
回归主题。
周末,来一道轻松小算法。
题目描述
平台:LeetCode
题号:961
给你一个整数数组 nums
,该数组具有以下属性:
nums
包含 个 不同的 元素nums
中恰有一个元素重复 次
找出并返回重复了 次的那个元素。
示例 1:
输入:nums = [1,2,3,3]
输出:3
示例 2:
输入:nums = [2,1,2,5,3,2]
输出:2
示例 3:
输入:nums = [5,1,5,2,5,3,5,4]
输出:5
提示:
nums
由 个 不同的 元素组成,且其中一个元素恰好重复 次
计数模拟
根据题目给定的三个条件可推断出:数组中仅有一个元素出现多次,其余元素均出现一次。
又利用数据范围为 ,我们可以使用数组充当哈希表进行计数,当出现一个 重复出现即是答案。
Java 代码:
class Solution {
int[] cnts = new int[10010];
public int repeatedNTimes(int[] nums) {
for (int x : nums) {
if (++cnts[x] > 1) return x;
}
return -1;
}
}
C++ 代码:
class Solution {
public:
int repeatedNTimes(vector<int>& nums) {
vector<int> cnts(10010, 0);
for (int x : nums) {
if (++cnts[x] > 1) return x;
}
return -1;
}
};
Python 代码:
class Solution:
def repeatedNTimes(self, nums: List[int]) -> int:
cnts = [0] * 10010
for x in nums:
cnts[x] += 1
if cnts[x] > 1:
return x
return -1
TypeScript 代码:
function repeatedNTimes(nums: number[]): number {
const cnts = new Array(10010).fill(0);
for (const x of nums) {
if (++cnts[x] > 1) return x;
}
return -1;
};
时间复杂度: 空间复杂度:
构造共性
假设重复出现的数字是 ,数字 重复了 次,要将这 个相同的 间隔开,需要 个额外数字,而实际上我们除 以外还有 个额外数字(数字总数为 个),因此在我们所能构造出的所有排列方式中,「最多」 使相邻 之间间隔了 个额外数字。
对于每个 而言,我们检查往前的三个位置(若有),如果有重复相等情况,说明当前的 即是答案。
Java 代码:
class Solution {
public int repeatedNTimes(int[] nums) {
int n = nums.length;
for (int i = 0; i < n; i++) {
int t = nums[i];
if (i - 1 >= 0 && nums[i - 1] == t) return t;
if (i - 2 >= 0 && nums[i - 2] == t) return t;
if (i - 3 >= 0 && nums[i - 3] == t) return t;
}
return -1;
}
}
C++ 代码:
class Solution {
public:
int repeatedNTimes(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n; ++i) {
int t = nums[i];
if (i - 1 >= 0 && nums[i - 1] == t) return t;
if (i - 2 >= 0 && nums[i - 2] == t) return t;
if (i - 3 >= 0 && nums[i - 3] == t) return t;
}
return -1;
}
};
Python 代码:
class Solution:
def repeatedNTimes(self, nums: List[int]) -> int:
for i in range(len(nums)):
t = nums[i]
if i - 1 >= 0 and nums[i - 1] == t:
return t
if i - 2 >= 0 and nums[i - 2] == t:
return t
if i - 3 >= 0 and nums[i - 3] == t:
return t
return -1
TypeScript 代码:
function repeatedNTimes(nums: number[]): number {
const n = nums.length;
for (let i = 0; i < n; i++) {
const t = nums[i];
if (i - 1 >= 0 && nums[i - 1] === t) return t;
if (i - 2 >= 0 && nums[i - 2] === t) return t;
if (i - 3 >= 0 && nums[i - 3] === t) return t;
}
return -1;
};
时间复杂度: 空间复杂度:
最后
巨划算的 LeetCode 会员优惠通道目前仍可用 ~
使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier,年度会员 有效期额外增加两个月,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。
我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。
欢迎关注,明天见。