怎么做微信钓鱼网站吗,ps软件需要付费吗,贷款平台代理怎么加入,网页设计程序代码26 删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使每个元素 只出现一次 #xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元…26 删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过
更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k 。 示例 1
输入nums [1,1,2]
输出2, nums [1,2,_]示例 2
输入nums [0,0,1,1,1,2,2,3,3,4]
输出5, nums [0,1,2,3,4]解题思路利用双指针 fast 和 slow 分别为快指针和慢指针快指针表示遍历数组到达的下标位置慢指针表示下一个不同元素要填入的下标位置初始时两个指针都指向下标 1。
思考什么情况下才需要填新元素当nums[fast]!nums[fast-1]时把fast值赋给slow。
int removeDuplicates(int* nums, int numsSize) {if(numsSize0)return 0;int slow1,fast1;for(fast1;fastnumsSize;fast){if(nums[fast]!nums[fast-1]){nums[slow]nums[fast];slow;}}return slow;
}
283 移动0
给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。 示例 1:
输入: nums [0,1,0,3,12]
输出: [1,3,12,0,0]示例 2:
输入: nums [0]
输出: [0]
解题思路双指针
void moveZeroes(int* nums, int numsSize) {int slow0,fast0;for(fast0;fastnumsSize;fast){if(nums[fast]!0){nums[slow]nums[fast];slow;}}for(int islow;inumsSize;i){nums[i]0;}
} c交换函数swap void swap(int *a,int *b){ int t*a; *a*b,*bt; } void swap(int *a, int *b) {int t *a;*a *b;*b t;
}
void moveZeroes(int* nums, int numsSize) {int slow0,fast0;for(fast0;fastnumsSize;fast){if(nums[fast]!0){swap(numsslow,numsfast);slow;}}
}