探索组合总和问题(力扣39,40,216)-前知

LinkedList和ArryayList

ArrayList 和 LinkedList 是 Java 中常用的集合类,用于存储一组元素。它们分别基于动态数组和双向链表实现,具有不同的特点和适用场景。

在 ArrayList 中,add 函数用于在列表的末尾添加元素,remove 函数用于删除指定位置的元素。

在 LinkedList 中,add 函数可以根据需要在列表的任意位置添加元素,remove 函数用于删除指定位置的元素,removeLast 函数用于删除链表的最后一个元素。

ArrayList 是基于数组实现的动态数组。它的特点包括:

  • 随机访问:

由于底层是数组,所以 ArrayList 支持通过索引快速访问元素,时间复杂度为 O(1)。

  • 尾部操作效率高:

在列表的末尾进行插入和删除操作效率较高,时间复杂度为 O(1)。

  • 内存空间连续:

所有的元素在内存中是连续存储的,这样可以利用 CPU 缓存,提高访问速度。

LinkedList 是基于双向链表实现的。它的特点包括:

  • 插入和删除效率高:

在任意位置进行插入和删除操作的效率较高,时间复杂度为 O(1)。

  • 不支持随机访问:

由于是链表结构,不支持通过索引直接访问元素,只能通过遍历或者迭代器来访问。

  • 内存空间不连续:

每个元素在内存中是通过指针相连的,不连续存储,因此对 CPU 缓存的利用率较低。

选择使用哪种集合
1.如果需要频繁地进行随机访问,应该使用 ArrayList。
2.如果需要频繁地进行插入和删除操作,尤其是在列表的中间位置,应该使用 LinkedList。


上一篇:【XR806开发板试用】XR806在U8G2上增加MQTT+JSON控制-目录结构: test_mqtt.c 基本上照搬大佬的代码,内容如下:


下一篇:【Nano Framework ESP】WS2812 彩色灯带实验