算法训练营第一天| 数组理论基础 ;704 二分查找; 27. 移除元素;977.有序数组的平方

数组

数组是存放在连续内存空间上的相同类型数据的集合。

数组的元素是不能删的,只能覆盖。

二分查找 : 704

有序数组和不重复是二分查找的前提

防止溢出: int mid = left + (right - left)/2;

二种写法:左闭右闭 [left, right] :while (left <= right) {left = mid - 1; right = mid + 1}

相关题:34:在排序数组中查找元素的第一个和最后一个位置

ArrayList<Integer> nums = new ArrayList<>();

nums.add();

nums.remove();

双指针:27. 移除元素 力扣题目链接

快慢指针!

要做完相关题!

双指针的变形题就不会了:

977.有序数组的平方:

开始的思路:

找到zeroIndex表示第一个非负数的Index,然后从这为界,分成slow,fast指针。

然后 双指针向相反的方向移动:也就变成了 两个升序数组的合并为一个升序数组:但一直卡在如何交换位置。

看完代码随想录的感受:

  1. 暴力排序(int[].sort()) 时间复杂度是O(n+logn)? 需要了解 背后的原码是怎么实现! 哪种排序方法!
  2. 为何 双指针可以从左到右,也可以从两边同时向里滑动!也可以不是快慢指针,取决于条件 然后 左右指针移动!要利用好这个数组的特性(从zeroIndex开始两个方向上都是升序数组)两边是最大!先比两遍,然后移动。
  3. 可以新建一个数组,然后存数据,比完就往里面放。

整理后的结果:

全部评论

相关推荐

点赞 评论 收藏
分享
ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
05-22 17:07
已编辑
门头沟学院 Java
程序员牛肉:都啥时候了还jb打蓝桥杯呢,有限找实习。
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务