leetcode刷题
分类:数组
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
class Solution { public: int searchInsert(vector<int>& nums, int target) { int j = nums.size() / 2; if (nums.size() == 1 && nums[0] == target) return 0; for (int i = 0; i < nums.size() -1; i++) { if (nums[i] == target) return i; if (nums[i] < target && nums[i+1] >= target) return i + 1; } if (nums[0] > target) return 0; else return nums.size(); } };
26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
class Solution { public: int removeDuplicates(vector<int>& nums) { if (nums.size() == 0) return 0; int j = 0; for (int i = 0; i < nums.size() - 1; i++) { if (nums[i] == nums[i+1]) { nums[j] = nums[i]; continue; } nums[++j] = nums[i+1]; } return j+1; } };