企业网站seo优化怎么做,网站收录免费咨询,网址大全最安全实用的网址,东莞市品牌网站建设27. 移除元素
题目链接#xff1a;https://leetcode.cn/problems/remove-element/ 题目描述#xff1a;给你一个数组 nums 和一个值 val#xff0c;你需要 原地 移除所有数值等于 val 的元素#xff0c;并返回移除后数组的新长度。不要使用额外的数组空间#xff0c;你必…27. 移除元素
题目链接https://leetcode.cn/problems/remove-element/ 题目描述给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例1输入nums [3,2,2,3], val 3 输出2, nums [2,2] 解释函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如函数返回的新长度为 2 而 nums [2,2,3,3] 或 nums [2,2,0,0]也会被视作正确答案。 示例2输入nums [0,1,2,2,3,0,4,2], val 2 输出5, nums [0,1,4,0,3] 解释函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。 题解
lass Solution:def removeElement(self, nums: List[int], val: int) - int:fast,slow 0,0size len(nums)while fast size:if nums[fast] ! val:nums[slow] nums[fast]slow 1fast 1return slow总结此题可以通过暴力解法解出通过两层循环一层遍历数组一层更新数组。另一种解法就是定义快慢指针快指针遍历数组如果不是目标值就将该值传给慢指针然后如果是目标值就快指针加1慢指针不变。
26. 删除有序数组中的重复项
题目链接https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/ 题目描述给你一个 升序排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k 。 示例1输入nums [1,1,2] 输出2, nums [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] 解释函数应该返回新的长度 5 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。 题解
class Solution:def removeDuplicates(self, nums: List[int]) - int:fast,slow 1,1size len(nums)if size 0:return 0while fast size:if nums[fast] ! nums[fast - 1]:nums[slow] nums[fast]slow 1fast 1return slow总结此题同样可以采用快慢指针法处理一下快指针指向的值与前一个值是否相等不相等则将快指针指向的值赋给慢指针。
283. 移动零
题目链接https://leetcode.cn/problems/move-zeroes/ 题目描述给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。请注意 必须在不复制数组的情况下原地对数组进行操作。 示例1输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例2输入: nums [0] 输出: [0] 题解
class Solution:def moveZeroes(self, nums: List[int]) - None:Do not return anything, modify nums in-place instead.fast,slow 0,0size len(nums)while fast size:if nums[fast] ! 0:temp nums[slow]nums[slow] nums[fast]nums[fast] tempslow 1fast 1return nums总结此题采用双指针解法当快指针指向的不是0将慢指针暂存快指针赋给慢指针暂存的值赋给快指针遍历数组
844. 比较含退格的字符串
题目链接https://leetcode.cn/problems/backspace-string-compare/ 题目描述给定 s 和 t 两个字符串当它们分别被输入到空白的文本编辑器后如果两者相等返回 true 。# 代表退格字符。注意如果对空文本输入退格字符文本继续为空。 示例1输入s “ab#c”, t “ad#c” 输出true 解释s 和 t 都会变成 “ac”。 示例2输入s “ab##”, t “c#d#” 输出true 解释s 和 t 都会变成 “”。 题解
class Solution:def backspaceCompare(self, s: str, t: str) - bool:def f(s):while # in s:i s.index(#)s s[:max(i - 1, 0)] s[i 1:]return sreturn f(s) f(t)