力扣26解python
时间: 2025-01-03 09:35:41 浏览: 10
### 力扣第26题的Python解法
对于力扣第26题——删除有序数组中的重复项,解决方案涉及双指针技巧来原地移除重复元素并返回新的长度。以下是具体的实现方式:
当输入列表为空时直接返回0表示无任何有效元素[^4]。
定义两个指针`fast`和`slow`均初始化为1(因为首个元素必定不重复),遍历整个列表过程中利用`fast`探查新元素而`slow`负责记录非重复位置。每当发现不同于前驱的新元素,则将其赋给`nums[slow]`处并将`slow`前进一位;无论是否遇到新元素,`fast`始终向前推进直至结束循环。
最终由`slow`所指示的位置即代表处理后的实际长度,因此作为函数返回值。
```python
from typing import List
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if not nums:
return 0
n = len(nums)
fast = slow = 1
while fast < n:
if nums[fast] != nums[fast - 1]:
nums[slow] = nums[fast]
slow += 1
fast += 1
return slow
```
相关问题
力扣 两数相加 python
在LeetCode(力扣)上,有一道名为“两数之和”的经典Python题目,编号为1。这是一道简单的查找题,任务是给定一个无序整数数组`nums`和一个目标值`target`,找出数组中是否存在两个元素,它们的和等于`target`。
Python解决方案通常是利用哈希表(字典)的数据结构,遍历数组的过程中,对于每个元素`num`,我们检查目标值`target - num`是否已经在字典中。如果在,则找到了一对符合条件的数;如果没有,我们就将`num`添加到字典中,作为下一次查找的起点。这种方法的时间复杂度是O(n),空间复杂度也是O(n)。
```python
def twoSum(nums, target):
# 创建一个空字典来存储数字及其索引
dict_nums = {}
for i, num in enumerate(nums):
# 如果目标值减去当前元素已存在字典中,直接返回结果
if target - num in dict_nums:
return [dict_nums[target - num], i]
# 否则,将当前元素及其索引添加到字典中
dict_nums[num] = i
# 没有找到解,返回空列表
return []
```
阅读全文