数据结构与算法之 leetcode 简单题速通 数组操作 / 基础数据结构

数据结构与算法阿木 发布于 2025-07-12 8 次阅读


LeetCode 简单题速通:数组操作与基础数据结构

在编程的世界里,LeetCode 是一个广为人知的在线编程平台,它提供了大量的编程题目,旨在帮助程序员提升算法和数据结构的能力。对于初学者来说,LeetCode 的简单题目是打好基础的关键。本文将围绕数组操作和基础数据结构,通过分析 LeetCode 上的简单题目,帮助读者快速掌握相关技能。

数组操作

数组是编程中最基本的数据结构之一,它允许我们存储一系列元素,这些元素可以是相同的数据类型。在 LeetCode 中,数组操作题目主要考察我们对数组的基本操作和算法实现。

1. 两数之和

题目描述:给定一个整数数组和一个目标值,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

python

def twoSum(nums, target):


num_dict = {}


for i, num in enumerate(nums):


complement = target - num


if complement in num_dict:


return [num_dict[complement], i]


num_dict[num] = i


return []


解析:使用哈希表来存储数组元素及其索引,遍历数组时,计算当前元素与目标值的差值,如果差值在哈希表中,则返回差值的索引和当前元素的索引。

2. 移除元素

题目描述:给定一个数组 nums 和一个值 val,请你在原地删除所有值为 val 的元素,返回新的长度。

python

def removeElement(nums, val):


i = 0


for j in range(len(nums)):


if nums[j] != val:


nums[i] = nums[j]


i += 1


return i


解析:使用双指针技术,一个指针遍历数组,另一个指针指向下一个应该存放非目标值的位置。当遍历指针指向的元素不等于目标值时,将其复制到下一个位置,并移动第二个指针。

基础数据结构

除了数组,LeetCode 简单题还涉及其他基础数据结构,如链表、栈、队列等。

1. 链表

题目描述:给定一个链表的头节点 head ,删除链表的倒数第 n 个节点,并返回链表的头节点。

python

class ListNode:


def __init__(self, val=0, next=None):


self.val = val


self.next = next

def removeNthFromEnd(head, n):


dummy = ListNode(0)


dummy.next = head


slow = fast = dummy


for _ in range(n + 1):


fast = fast.next


while fast:


slow = slow.next


fast = fast.next


slow.next = slow.next.next


return dummy.next


解析:使用快慢指针技术,快指针先走 n+1 步,然后慢指针和快指针同时移动,当快指针到达链表末尾时,慢指针指向的节点即为倒数第 n 个节点。

2. 栈

题目描述:给定一个整数数组 nums 和一个整数 val,请你在原地删除所有重复出现的元素,使得每个元素只出现一次,返回移除重复元素后的数组长度。

python

def removeDuplicates(nums):


stack = []


for num in nums:


if not stack or stack[-1] != num:


stack.append(num)


return stack


解析:使用栈来存储不重复的元素,遍历数组时,如果栈为空或者栈顶元素不等于当前元素,则将当前元素压入栈中。

总结

通过以上分析,我们可以看到,LeetCode 简单题主要考察我们对数组操作和基础数据结构的掌握。通过解决这些题目,我们可以巩固对数据结构的理解,提高编程能力。在学习和练习的过程中,建议读者多思考、多总结,逐步提升自己的算法水平。

(注:本文代码示例仅供参考,实际编程中可能需要根据具体情况进行调整。)