- 博客(3)
- 收藏
- 关注
原创 2010.10.10【力扣#35】搜索插入位置
题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例: 输入: nums = [1,3,5,6], target = 5 输出: 2 思路 定义左右指针l和r,由于数组已经排好序,且要求复杂度为O(logn),则想到二分法。由示例可知,当目标值和数组元素相同时,插入数组元素的左边。在代码中要注意临界情况。 代码 class Solution { public: int
2021-10-10 12:30:09 79
原创 2021.10.10【力扣#27】移除数组元素
题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 思路 定义双指针slow和fast,用fast比较数组元素和val,如果不相等,则赋值到slow指向的数组位置。时间复杂度为O(n)。在最坏情况下,数组中没有val存在,这时左右指针需要各自遍历数组一次。 代码 class Solution {
2021-10-10 12:18:38 79
原创 2021.10.10【力扣#26】删除数组重复元素
问题描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 思路 我一开始的思路是:先选定第0个元素,把后面的每个元素一次与其比较,如果重复,则把后面的所有元素一次往前移动一位。这样遍历一遍后,在选定第二个元素,重复上述操作。这样写起来十分复杂,且时间复杂度为O(n^2)。 答案的做法是双指针。分别定义slow=0,fast=1,当nums[sl
2021-10-10 11:51:23 108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人