返回

LeetCode周赛311战报:平平无奇的裸题大赛……

闲谈

大家好,我是梁唐。照惯例我们来聊聊昨天的LeetCode周赛。

上周的周赛由安贤量化赞助,今年互联网行情整体不好,但很多量化公司还在招人。感兴趣的朋友们可以关注一下。

评论区对这次比赛总体来说评价还算可以,认为题目难度适中,没有太难的题。

但也有少数选手认为题目太简单,没有挑战性。

总的来说,这是一场比较中规中矩的周赛,没有特别亮眼的题目,也没有特别难的题目。

下面我们来具体看一下每道题的难度和解题思路:

第一题:猜数字

这是一道比较简单的模拟题。

题目要求我们根据给定的猜测结果,判断出目标数字。

我们可以使用二分法来解决这个问题。

首先,我们将猜测范围设为[1, 1000000000]。

然后,我们将猜测范围的中点设为mid。

如果猜测结果为“大了”,则将猜测范围的右边界设为mid-1。

如果猜测结果为“小了”,则将猜测范围的左边界设为mid+1。

如果猜测结果为“猜对了”,则返回mid。

重复以上步骤,直到猜测结果为“猜对了”为止。

第二题:合并两个链表

这是一道经典的链表题。

题目要求我们合并两个有序链表,并返回合并后的有序链表。

我们可以使用双指针法来解决这个问题。

首先,我们将两个链表的头结点分别设为head1和head2。

然后,我们将一个指针current指向head1,另一个指针current2指向head2。

如果current的值小于或等于current2的值,则将current移动到下一个节点,并将合并后的链表的尾结点指向current。

如果current的值大于current2的值,则将current2移动到下一个节点,并将合并后的链表的尾结点指向current2。

重复以上步骤,直到current和current2都为null。

第三题:判断是否为回文数

这是一道比较简单的数学题。

题目要求我们判断一个给定的整数是否为回文数。

我们可以使用字符串反转的方法来解决这个问题。

首先,我们将给定的整数转换为字符串。

然后,我们将字符串反转。

如果反转后的字符串与原来的字符串相等,则给定的整数是回文数,否则不是。

第四题:最长公共子序列

这是一道比较难的字符串题。

题目要求我们找出两个给定字符串的最长公共子序列。

我们可以使用动态规划的方法来解决这个问题。

首先,我们将两个字符串分别设为s1和s2。

然后,我们将一个二维数组dp初始化为0。

如果s1[i]等于s2[j],则dp[i][j] = dp[i-1][j-1] + 1。

否则,dp[i][j] = max(dp[i-1][j], dp[i][j-1])。

最后,dp[m][n]的值就是两个字符串的最长公共子序列的长度。