2024年度流行语出炉,可以说毫不意外

教育   2024-12-25 14:50   上海  

年度流行语

虽然还有几天才正式进入 2025,但各个平台已经陆续公布了"2024 年度关键词/流行语"。

很有意思,一起来看看。

12月12日,上海《语言文字周报》发布了 2024 年的"十大网络流行语"榜单:

这十大流行语里面,每个都算耳熟,但有多少个你是明确知道意思的?

反正在刚看到榜单的时候,有一半以上的词儿,我说不出所以然 🤣🤣🤣

  • 偷感(很重):底气不足或怕引起关注,导致整个画面画风不对
  • 草台班子/世界是一个巨大的草台班子:不解释
  • 班味:当代职场人一种常见的生活状态,主要表现为素面朝天、精神涣散、衣着宽松、眼中充满疲惫
  • 那咋了:一种轻松无所谓的心态,在面对困难或质疑时,以一种满不在乎的态度回应‌
  • (就这么)水灵灵地XX:形容一种年轻、有活力的状态。这词儿本身没有太多特别的意思,更多是因为句式百搭而流行起来。最开始源于韩国女子组合采访发言
  • city/city不city:源自于海外博主在中国旅游时的一段对话:"上海city不city啊?","好city啊!"。因为口音独特,该词迅速走红,后来被网友发展为用来代指现代化、洋气等事物
  • 包XX的/包的:最早以「包赢的」出现在某游戏博主的评论区。后来发展为对某件事的成功极度自信
  • 红温:形容某人生气时面色通红的样子。基本是"急了,破防"了的进化词儿
  • 搞抽象:代表反常规、反规则、注重个性表达的特点

那如果要你在这十个里面选一个,作为你的年度流行语,你选哪个?

我想大多数人的选择,会和「小红书」的年度关键字相同:

对此,你怎么看?你的年度关键字是什么?欢迎评论区交流。

对了,文末还有个"小忙"需要大家帮一下,十分感谢 🙏🏻

...

回归主题。

来一道和「腾讯(校招)」相关的算法题。

题目描述

平台:LeetCode

题号:873

如果序列  满足下列条件,就说它是 斐波那契式 的:

  • n >= 3
  • 对于所有 i + 2 <= n,都有 

给定一个严格递增的正整数数组形成序列 arr,找到 arr 中最长的斐波那契式的子序列的长度。如果一个不存在,返回  

回想一下,子序列是从原序列 arr 中派生出来的,它从 arr 中删掉任意数量的元素(也可以不删),而不改变其余元素的顺序。例如, [3, 5, 8] 是 [3, 4, 5, 6, 7, 8] 的一个子序列。

示例 1:

输入: arr = [1,2,3,4,5,6,7,8]

输出: 5

解释: 最长的斐波那契式子序列为 [1,2,3,5,8] 。

示例 2:

输入: arr = [1,3,7,11,12,14,18]

输出: 3

解释: 最长的斐波那契式子序列有 [1,11,12]、[3,11,14] 以及 [7,11,18] 。

提示:

序列 DP

定义 为使用 为斐波那契数列的最后一位,使用 为倒数第二位(即 的前一位)时的最长数列长度。

不失一般性考虑 该如何计算,首先根据斐波那契数列的定义,我们可以直接算得 前一位的值为 ,而快速得知 值的坐标 ,可以利用 arr 的严格单调递增性质,使用「哈希表」对坐标进行转存,若坐标 存在,并且符合 ,说明此时至少凑成了长度为 的斐波那契数列,同时结合状态定义,可以使用 来更新 ,即有状态转移方程:

同时,当我们「从小到大」枚举 ,并且「从大到小」枚举 时,我们可以进行如下的剪枝操作:

  • 可行性剪枝:当出现 ,说明即使存在值为 的下标 ,根据 arr 单调递增性质,也不满足 的要求,且继续枚举更小的 ,仍然有 ,仍不合法,直接 break 掉当前枚举 的搜索分支;
  • 最优性剪枝:假设当前最大长度为 ans,只有当 ,我们才有必要往下搜索, 的含义为以 为斐波那契数列倒数第二个数时的理论最大长度。

Java 代码:

class Solution {
    public int lenLongestFibSubseq(int[] arr) {
        int n = arr.length, ans = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < n; i++) map.put(arr[i], i);
        int[][] f = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = i - 1; j >= 0 && j + 2 > ans; j--) {
                if (arr[i] - arr[j] >= arr[j]) break;
                int t = map.getOrDefault(arr[i] - arr[j], -1);
                if (t == -1continue;
                f[i][j] = Math.max(3, f[j][t] + 1);
                ans = Math.max(ans, f[i][j]);
            }
        }
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    int lenLongestFibSubseq(vector<int>& arr) {
        int n = arr.size(), ans = 0;
        unordered_map<intintmap;
        for (int i = 0; i < n; i++) map[arr[i]] = i;
        vector<vector<int>> f(n, vector<int>(n, 0));
        for (int i = 0; i < n; i++) {
            for (int j = i - 1; j >= 0 && j + 2 > ans; j--) {
                if (arr[i] - arr[j] >= arr[j]) break;
                auto it = map.find(arr[i] - arr[j]);
                if (it == map.end()) continue;
                int t = it->second;
                f[i][j] = max(3, f[j][t] + 1);
                ans = max(ans, f[i][j]);
            }
        }
        return ans;
    }
};

Python  代码:

class Solution:
    def lenLongestFibSubseq(self, arr: List[int]) -> int:
        n, ans = len(arr), 0
        mapping = {num: idx for idx, num in enumerate(arr)}
        f = [[0] * n for _ in range(n)]
        for i in range(n):
            j = i - 1
            while j >= 0 and j + 2 > ans:
                if arr[i] - arr[j] >= arr[j]:
                    break
                t = mapping.get(arr[i] - arr[j], -1)
                if t != -1:
                    f[i][j] = max(3, f[j][t] + 1)
                    ans = max(ans, f[i][j])
                j -= 1
        return ans

TypeScript 代码:

function lenLongestFibSubseq(arr: number[]): number {
    let n = arr.length, ans = 0;
    const map = new Map<numbernumber>();
    for (let i = 0; i < n; i++) map.set(arr[i], i);
    const f = Array.from({length: n}, () => Array(n).fill(0));
    for (let i = 0; i < n; i++) {
        for (let j = i - 1; j >= 0 && j + 2 > ans; j--) {
            if (arr[i] - arr[j] >= arr[j]) break;
            const t = map.has(arr[i] - arr[j]) ? map.get(arr[i] - arr[j]) : -1;
            if (t === -1continue;
            f[i][j] = Math.max(3, f[j][t] + 1);
            ans = Math.max(ans, f[i][j]);
        }
    }
    return ans;
};
  • 时间复杂度:存入哈希表复杂度为 DP 过程复杂度为 。整体复杂度为
  • 空间复杂度:

最后

巨划算的 LeetCode 会员优惠通道目前仍可用 ~

使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier,年度会员 有效期额外增加两个月,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。

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

欢迎关注,明天见。

最近在参加「年度作者」评比,每个手机号每天可以投至少两票,投票时间截止于 2024-12-30,大家可以点击下方「阅读原文」直达投票现场,十分感谢,来年会更大家送更多的书籍作为福利 ~ 🙏🏻

宫水三叶的刷题日记
锐评时事热点的 算法与数据结构 题解区博主。「 刷穿 LeetCode 」系列文章原创公众号。
 最新文章