一、数组理论基础
学习前:
1. 数组定义
一些在内存上连续存储的相同数据类型的数据的集合
2. 数组特征
便于查询数组元素,不便于增删数据元素
学习后:
对于Java,二维数组不一定在内存上连续。如int[i][j],唯一确定的是int[i][]在内存上连续
二、704. 二分查找
LeetCode 704. 二分查找
学习前:
思路:
- 左闭右闭(while(left<=right);left=mid+1,right=mid-1,mid=(right+left)/2) 习惯用这种
- 左闭右开(while(left<right);left=mid+1,right=mid,mid=(right+left)/2)
时间复杂度:O(logn)
空间复杂度:O(1)
学习后:
mid=(right-left)/2+left,防溢出
三、27. 移除元素
Leetcode 27. 移除元素
学习前:
思路:
快慢指针。慢指针指向符合条件的数组元素,快指针指向不符合条件的数组元素,并将快指针指向的值赋值给慢指针指向的值
时间复杂度:O(n)
空间复杂度:O(1)
学习后:
快慢指针就是将2个for循环变成1个for循环,即时间复杂度从O(n^2)到O(n)
四、学习总结
- 时间:1.5h
- 学会了写博客以及Markdown基本语法
- 复习了数组相关知识,并有新收获