代码随想录算法训练营第一天 | 数组理论基础,704. 二分查找,27. 移除元素

发布时间 2023-12-13 20:46:36作者: amulet

一、数组理论基础

学习前:

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. 时间:1.5h
  2. 学会了写博客以及Markdown基本语法
  3. 复习了数组相关知识,并有新收获