当前位置:实例文章 » 其他实例» [文章]2023-07-17力扣今日三题

2023-07-17力扣今日三题

发布人:shili8 发布时间:2025-01-11 15:59 阅读次数:0

**力扣今日三题**

今天,我们将解决三个有趣的问题。第一个问题是关于寻找最长的连续序列,第二个问题是关于判断两个链表是否相交,第三个问题是关于找到旋转后的数字。

###1. 最长的连续序列**描述:**
给定一个整数数组 `nums`,请返回长度为 `k` 的最长连续子序列。这个子序列可以从左到右或从右到左读取。

**示例:**

* 输入:`nums = [1,2, -1, -4, -3,6], k =2`
输出:`[1, -1]`
* 输入:`nums = [1,2, -1, -4, -3,6], k =5`
输出:`[1,2, -1, -4, -3]`

**代码:**

class Solution:
 def longestConsecutive(self, nums: List[int]) -> int:
 num_set = set(nums)
 max_length =0 for num in num_set:
 if num -1 not in num_set:
 current_num = num current_length =1 while current_num +1 in num_set:
 current_num +=1 current_length +=1 max_length = max(max_length, current_length)

 return max_length


###2. 判断两个链表是否相交**描述:**
给定两个链表 `headA` 和 `headB`,请返回它们是否相交。

**示例:**

* 输入:`list1 = [4,3,2,1], list2 = [5,0,11]`
输出:`False`
* 输入:`list1 = [8,6,7,3,-1,0,5], list2 = [2,4,3]`
输出:`True`

**代码:**
class Solution:
 def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
 if not headA or not headB:
 return None p1 = headA p2 = headB while p1 != p2:
 p1 = p1.next if p1 else headB p2 = p2.next if p2 else headA return p1


###3. 找到旋转后的数字**描述:**
给定一个旋转后的整数 `num`,请返回原来的数字。

**示例:**

* 输入:`num =109`, 旋转次数为 `2`
输出:`91`
* 输入:`num =1000`, 旋转次数为 `5`
输出:`100`

**代码:**
class Solution:
 def rotatedDigits(self, num: int) -> int:
 if num < 10 or (num >=20 and num %11 !=0):
 return -1 digits = []
 while num >0:
 digit = num %10 if digit ==6 or digit ==9:
 digits.append(digit)
 elif digit ==3 or digit ==4 or digit ==7:
 return -1 else:
 digits.append(digit)

 num //=10 return int(''.join(map(str, reversed(digits))))


以上就是今天的三个问题。希望你能解决它们!

其他信息

其他资源

Top