- 博客(6)
- 资源 (24)
- 收藏
- 关注
原创 LeetCode Hot 100 - 三数之和
采用双指针的思路,先将数组进行排序,然后对数组进行遍历,以当前遍历到的数为起始点,左指针为当前数的下一个数,右指针为数组最右端的数,然后判断三个数相加是否等于0。在遍历的过程中,需要注意的是,需要将重复的数字过滤掉,否则会产生重复的结果。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]注意,输出的顺序和三元组的顺序并不重要。输入:nums = [0,1,1]答案中不可以包含重复的三元组。
2024-07-02 00:22:01 160
原创 LeetCode Hot 100 - 盛最多水的容器
我们可以定义左指针left,从数组的最左端开始,右指针right,从数组的最右端开始,再定义一个最大的容量maxCap。开启一个循环,循环的条件为 left < right,判断当前left和right所能容纳的容量是否大于maxCap,如果是的话,则进行赋值替换,然后高度较低的一方进行收缩,进入下一轮循环,直到退出循环。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。时间复杂度:从代码可知,循环逻辑最坏情况下,会执行N次,故其时间复杂度为 O(N),N为数组的长度;
2024-06-25 00:14:49 407
原创 LeetCode Hot 100 - 移动零
当右指针的数字不为0,而左指针的数字为0时,则进行一次左右指针指向的数字的交换。然后当左指针指向的数字不为0时,则向右走一步,而右指针默认都需要向右走一步,直到到达数组的最右端。空间复杂度:只使用length,left,right三个整数类型的变量,所以其空间复杂度为O(1)时间复杂度:很明显,对数组遍历了一次,所以时间复杂度为O(N),其中N为数组的长度。采用双指针的思路,左指针和右指针,初始都从数组的最左端开始。输入:nums = [0,1,0,3,12]输出:[1,3,12,0,0]
2024-06-24 00:10:21 188
原创 LeetCode Hot 100 - 最长连续序列
对map的元素进行遍历,对当前遍历得到的元素N,持续进行连续递增数字是否存在判断,且记录下从当前元素N连续递增的个数,直到数字不连续递增为止,此时需要判断从当前元素N连续递增的个数是否大于maxLength最长的连续递增数,如果是的话,则进行赋值替换。时间复杂度:在首次遍历数组时,是O(N)时间复杂度,然后在遍历map时,也是O(N)的时间复杂度,所以整体来说,其时间复杂度为O(N),N为数组的长度。声明一个map,把所有的元素都记录起来;输入:nums = [0,3,7,2,5,8,4,6,0,1]
2024-06-23 23:30:41 492
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人