LeetCode周赛311战报:平平无奇的裸题大赛……
2023-11-03 22:34:06
大家好,我是梁唐。照惯例我们来聊聊昨天的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]的值就是两个字符串的最长公共子序列的长度。