news 2026/7/2 8:12:55

携程闹乌龙,误发通知全员都被离职了。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
携程闹乌龙,误发通知全员都被离职了。

1月12日晚,大量携程员工突然收到一条措辞正式的离职通知短信,内容以“XX你好,感谢一路相伴”开头。此次乌龙事件源于内部沟通软件trappal下线,在关停关联手机号绑定功能时,工作人员未提前关闭系统预设的短信提醒,该事件还一度登顶微博热搜榜。

事件发生后,携程通过内部渠道向员工说明,这是一次系统测试阶段的乌龙事件,不存在全员离职计划,并向受影响员工致歉。网友们对此议论纷纷,有人调侃这是“巨大的草台班子”,还有人评论说“人怎么可以捅这么大的篓子”。更有网友认为携程在免费做宣传,称其为“营销鬼才”。

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第1458题:两个子序列的最大点积,难度是困难。

给你两个数组 nums1 和 nums2 。请你返回 nums1 和 nums2 中两个长度相同的非空子序列的最大点积。

数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。比方说,[2,3,5] 是 [1,2,3,4,5] 的一个子序列而 [1,5,3] 不是。

示例1:

输入:nums1 = [2,1,-2,5], nums2 = [3,0,-6]

输出:18

解释:从 nums1 中得到子序列 [2,-2] ,从 nums2 中得到子序列 [3,-6] 。

它们的点积为 (2*3 + (-2)*(-6)) = 18 。

示例2:

输入:nums1 = [3,-2], nums2 = [2,-6,7]

输出:21

解释:从 nums1 中得到子序列 [3] ,从 nums2 中得到子序列 [7] 。

它们的点积为 (3*7) = 21 。

  • 1 <= nums1.length, nums2.length <= 500

  • -1000 <= nums1[i], nums2[i] <= 1000

问题分析

这题说的是从两个数组中分别找出两个长度一样的子序列,计算他们的最大点集,实际上这题是求最长公共子序列的翻版,我们完全可以按照求最长公共子序列的方式来解这道题,也就是使用动态规划。

定义dp[i][j]表示nums1的前 i 个字符和nums2的前 j 个字符得到的最大点集,那么最终结果就是dp[m][n],其中m,n分别是nums1和nums2的长度,那么递推公式是什么呢?

当计算dp[i][j]的时候,我们可以同时选择数字nums1[i]和数字nums2[j],那么递推公式就是dp[i][j]=dp[i-1][j-1]+cur,其中cur是数字nums1[i]和数字nums2[j]的乘积。

也可以只选择数字nums1[i],不选择数字nums2[j],那么递推公式就是dp[i][j]=dp[i][j-1]。

也可以只选择数字nums2[j],不选择数字nums1[i],那么递推公式就是dp[i][j]=dp[i-1][j]。

也可以数字nums1[i]和数字nums2[j]都不选择,那么递推公式就是dp[i][j]=dp[i-1][j-1],因为前面的dp[i][j-1]和dp[i-1][j-1]对应的状态已经包含了dp[i-1][j-1],所以这个我们可以不写。

其实这里还一种,就是前面的我们都不选,只选择当前的两个数字的乘积cur,因为题中说的是非空的子序列,所以每一个数组最少要选择一个元素。

以上几种情况我们只需要取最大值即可。

JAVA:

public int maxDotProduct(int[] nums1, int[] nums2) { int m = nums1.length, n = nums2.length; int[][] dp = newint[m + 1][n + 1]; for (int[] d : dp) Arrays.fill(d, Integer.MIN_VALUE / 2);// 初始化一个比较大的负数 for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { int cur = nums1[i - 1] * nums2[j - 1]; // 递推公式 dp[i][j] = Math.max(cur, Math.max(dp[i - 1][j - 1] + cur, Math.max(dp[i - 1][j], dp[i][j - 1]))); } } return dp[m][n]; }

C++:

public: int maxDotProduct(vector<int> &nums1, vector<int> &nums2) { int m = nums1.size(), n = nums2.size(); // 初始化一个比较大的负数 vector<vector<int>> dp(m + 1, vector<int>(n + 1, INT_MIN / 2)); for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { int cur = nums1[i - 1] * nums2[j - 1]; // 递推公式 dp[i][j] = max(cur, max(dp[i - 1][j - 1] + cur, max(dp[i - 1][j], dp[i][j - 1]))); } } return dp[m][n]; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 17:10:09

【大数据毕设全套源码+文档】基于Django+协同过滤算法的电影个性化推荐系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/1 20:29:59

基于Python 医药信息管理系统(源码+数据库+文档)

医药信息管理 目录 基于PythonDjango医药信息管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango医药信息管理系统 一、前言 博主介绍&#xff1a…

作者头像 李华
网站建设 2026/7/1 11:46:10

1小时搞定:用PLAYWRIGHT快速验证产品创意

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个快速验证产品创意的PLAYWRIGHT原型&#xff0c;功能包括&#xff1a;1.自动采集竞品关键页面截图 2.提取核心功能点对比 3.生成可视化对比报告 4.模拟用户旅程。要求支持配…

作者头像 李华
网站建设 2026/7/1 2:23:02

nTopology平台自动生成适配不同热源分布的流道拓扑。

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 &#x1f48c;公众号&#xff1a;莱歌数字&#xff08;B站同名&#xff09; &#x1f4f1;个人微信&#xff1a;yanshanYH 211、985硕士&#xff0c;从业16年 从…

作者头像 李华
网站建设 2026/6/30 0:20:08

传统调试vsAI辅助:修复SyntaxError的效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个对比测试工具&#xff0c;能够&#xff1a;1. 生成包含SyntaxError的测试代码样本&#xff1b;2. 记录人工修复这些错误所需的时间&#xff1b;3. 使用AI自动修复同样的错…

作者头像 李华
网站建设 2026/6/28 23:16:28

网上超市系统(源码+数据库+文档)

网上超市 目录 基于springboot vue网上超市系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue网上超市系统 一、前言 博主介绍&#xff1a;✌️大…

作者头像 李华