力扣数组--总结篇

前言

六天力扣,一天两道题,刷了十二道题。希望能刷的有效果!按照计划,数组篇得告一段落了,浅浅写个总结吧。

内容

12道题如下:具体内容可以参考往期文章

力扣数组--总结篇_第1张图片

数组特点 

 得先了解一些数组的基本特点:数组是存放在连续内存空间上的相同类型数据的集合。

数组下标都是从0开始的。区分len(nums)和nums[n-1]

数组内存空间的地址是连续的

所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。

数组的元素是不能删的,只能覆盖,这个要牢记。

常用思想和算法
暴力解法

根据题目排序遍历等,可以用一些整体思想,弄清楚题目要求返回什么。

二分法 

二分法时间复杂度:O(logn)

注意区间,左闭右闭区间还是左闭右开区间,不同区间写法是不一样的。

双指针法 

设置slow fast两个指针,同向遍历

或者 left right两个指针,从两端遍历

注意每次移动指针时要更新什么

哈希表 

就是用空间换时间,把数组的下标设为哈希表的键(Key),把数组中的每一个数字设为哈希表的值(Value),这样每一个下标及数组中该下标对应的数字就组成了一个键值对,方便查找。

其他

力扣中可以调用排序等函数,但是我们得熟悉排序的具体实现

冒泡排序  选择排序  插入排序  快速排序


还要注意的是 刷题时要求的时间空间复杂度,它是衡量一个算法是否合适的标准。如果时间复杂度和空间复杂度过高,会导致算法效率低下。优先选择效率高的算法。

还有二维数组,以后刷到再写吧。

最后

目前就想到这么多,就这样。下一站,链表!

你可能感兴趣的:(力扣数组篇,leetcode,算法,职场和发展,数据结构,golang)