大家好,我是苍何。
这段时间,互联网大厂们都在各种降本增效,腾讯也不例外,这两年关停了不少的 APP 和小程序。
即使在腾讯内部很赚钱的游戏业务,也面临「不赚钱,就关停」的命运。
这不,近日,腾讯官方发布重要公告,宣布旗下游戏《白夜极光》将终止其在中国大陆区域的服务运营。
公告显示,游戏将于 2025 年 1 月 24 日上午 12 点,正式停止在中国大陆地区的运营。
具体安排如下:
① 2024年11月25日上午10点00分,关闭游戏充值功能。
② 2024年11月25日晚上24点00分,停服2小时关闭游戏注册,开服后,历史已注册的用户可正常登录。
③ 2025年01月24日上午12点00分,正式停止游戏运营,包括但不限于关闭游戏下载渠道、关闭游戏服务器、关闭官网与客服服务等。
当然了,腾讯也制定了相应的补偿方案,允许玩家在关停之前领取其他热门游戏的礼包,如《王者荣耀》、《和平精英》等。
但再多的补偿也很难挽回玩家们失望的心,就好比我用心养了一只狗,你突然给炖了吃了,然后说赔偿我其他宠物猫代金券,但我的狗已经不会再有了。
《白夜极光》是一款二次元手游,这款游戏火于日本,并在 2023 年 6 月由腾讯代理全新运营,至今仅运营了一年多时间,就要下线了。
除此,另外一款由腾讯代理的游戏《黑色沙漠》也传出停运消息,官方说法是,因与游戏开发商的代理合约即将期满,《黑色沙漠》手游将终止其大陆地区的运营服务。
宣布将于 2025 年 1 月 27 日 11 点正式停止《黑色沙漠》手游在中国大陆地区的运营。
讲真,黑沙停运有些可惜,
在之前,腾讯就宣布,任天堂国行Switch将于2026年3月31日起至2026年5月15日逐步停止Nintendo e商店和其他网络相关运营服务,
有人就得出一个结论,要玩就玩热门游戏吧,比如王者啊,lol 啊,不然你充了钱,哪天说停就停了,最难受的是,之前的一切都白费。
讲到游戏,我仿佛有一个世纪没玩了,你玩过腾讯的什么游戏呢?今日互动话题:说出你最喜欢的一款游戏。
我会选出热门留言,被选中的幸运儿将会接受来自苍何的大礼包。
ps:以后文末抽奖统一改为今日互动话题,形式暂定为根据当日指定话题,选出热门留言。
我觉得是一件挺有意义的事情,每日一个话题,让我们彼此链接的更深,也让大家多发声,不然光苍何天天 BB,多孤独呀。😂
...
回归主题。
今天来一道简单面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:70
题目名称:爬楼梯
描述:
假设你正在爬楼梯。需要 n 阶才能到达楼顶。
每次你可以爬 1 阶或 2 阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶:
1 阶 + 1 阶
2 阶
示例 2:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶:
1 阶 + 1 阶 + 1 阶
1 阶 + 2 阶
2 阶 + 1 阶
提示:
1≤n≤451 \leq n \leq 45
解题思路
这道题可以用动态规划来解决,类似于斐波那契数列的问题。
定义状态:
用
dp[i]
表示到达第 ii 阶的方法数。
状态转移方程:
到达第 ii 阶可以从第 i−1i-1 阶爬 1 阶,或者从第 i−2i-2 阶爬 2 阶,因此:dp[i]=dp[i−1]+dp[i−2]dp[i] = dp[i-1] + dp[i-2]
初始化:
dp[1]=1dp[1] = 1:到第 1 阶只有 1 种方法。
dp[2]=2dp[2] = 2:到第 2 阶有 2 种方法(1+1 或 2)。
返回结果:
最后返回
dp[n]
即可。
代码实现
Java 实现
public class ClimbingStairs {
public int climbStairs(int n) {
if (n <= 2) return n; // 边界条件
int[] dp = new int[n + 1]; // 创建数组,存储每阶的方法数
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2]; // 状态转移方程
}
return dp[n]; // 返回到第 n 阶的方法数
}
}
C++ 实现
#include <vector>
using namespace std;
class Solution {
public:
int climbStairs(int n) {
if (n <= 2) return n; // 边界条件
vector<int> dp(n + 1); // 创建数组,存储每阶的方法数
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2]; // 状态转移方程
}
return dp[n]; // 返回到第 n 阶的方法数
}
};
Python 实现
class Solution:
def climbStairs(self, n: int) -> int:
if n <= 2:
return n # 边界条件
dp = [0] * (n + 1) # 创建数组,存储每阶的方法数
dp[1], dp[2] = 1, 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2] # 状态转移方程
return dp[n] # 返回到第 n 阶的方法数
优化方法
动态规划的解法中,dp[i]
只依赖于 dp[i-1]
和 dp[i-2]
,因此可以用两个变量代替数组,优化空间复杂度至 O(1)O(1)。
优化后的代码
Java
public class ClimbingStairs {
public int climbStairs(int n) {
if (n <= 2) return n; // 边界条件
int prev = 1, curr = 2; // 使用两个变量
for (int i = 3; i <= n; i++) {
int temp = curr;
curr = curr + prev; // 更新当前阶数的方法数
prev = temp; // 更新上一阶数的方法数
}
return curr; // 返回第 n 阶的方法数
}
}
C++
class Solution {
public:
int climbStairs(int n) {
if (n <= 2) return n; // 边界条件
int prev = 1, curr = 2; // 使用两个变量
for (int i = 3; i <= n; i++) {
int temp = curr;
curr = curr + prev; // 更新当前阶数的方法数
prev = temp; // 更新上一阶数的方法数
}
return curr; // 返回第 n 阶的方法数
}
};
Python
class Solution:
def climbStairs(self, n: int) -> int:
if n <= 2:
return n # 边界条件
prev, curr = 1, 2 # 使用两个变量
for i in range(3, n + 1):
prev, curr = curr, curr + prev # 更新当前和上一阶数的方法数
return curr # 返回第 n 阶的方法数
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在每一篇文章下留言参与活动,每一篇文章会给到一个不同的互动话题,对应的话题都是独立的,此篇互动话题为【说出你最喜欢的一款游戏】。截止时间统一为发文后一个星期。