建设通网站是什么性质,中小企业网站制作广州网络服务公司找赛合,装修公司做网销的网站,网上商城公司网站建设方案题目一#xff1a;移除元素
给你一个数组 nums 和一个值 val#xff0c;你需要 原地 移除所有数值等于 val 的元素#xff0c;并返回移除后数组的新长度。
不要使用额外的数组空间#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不…题目一移除元素
给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。
不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
from typing import List
class Solution:def removeElement(cls, nums: List[int], val: int) - int:fast slow 0while fastlen(nums):if nums[fast] ! val:nums[slow]nums[fast]fastfast1slowslow1else:fastfast1return slowif __name__ __main__:sSolution()s.removeElement(nums[1,2,3,4,2,3,4],val2) 题目二删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
class Solution:def removeDuplicates(self, nums: List[int]) - int:slow0fast1while fastlen(nums):if nums[slow]nums[fast]:fastfast1else:slowslow1nums[slow]nums[fast]fastfast1return slow1
题目三删除有序数组中的重复项 II
给你一个有序数组 nums 请你 原地 删除重复出现的元素使得出现次数超过两次的元素只出现两次 返回删除后数组的新长度。
from typing import List
class Solution:def removeDuplicates(self, nums: List[int]) - int:slow0fast1count1while fastlen(nums):if nums[slow] nums[fast]:countcount1if count2:slowslow1nums[slow]nums[fast]fastfast1else:fast fast 1elif nums[slow] ! nums[fast] :count1slow slow1nums[slow] nums[fast]fast fast1print(nums)print(slow1)return slow1if __name__ __main__:sSolution()s.removeDuplicates(nums[1,1,1,2,2,2,3])
优化
from typing import List
class Solution:def removeDuplicates(self, nums: List[int]) - int:slow2fast2while fastlen(nums):if nums[fast] ! nums[slow-2]:nums[slow]nums[fast]slowslow1fastfast1else:fastfast1return slowif __name__ __main__:sSolution()s.removeDuplicates(nums[1,1,1,2,2,2,3]) 题目四移动零
给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。
from typing import List
class Solution:def moveZeroes(self, nums: List[int]) - None:slow0for fast in range(len(nums)):if nums[fast] ! 0:nums[slow] nums[fast]slowslow1for item in range(slow,len(nums)):nums[item]0return numssSolution()
print(s.moveZeroes(nums[0,1,0,3,4,7]))# 不为0的先移到前面后面的都补为0
题目五比较含退格的字符串
给定 s 和 t 两个字符串当它们分别被输入到空白的文本编辑器后如果两者相等返回 true 。# 代表退格字符。
注意如果对空文本输入退格字符文本继续为空。
class Solution:def getString(self,sc):bz[]for item in sc:if item ! #:bz.append(item)elif len(bz)0:bz.pop()print(bz)return str(bz)def backspaceCompare(self, s: str, t: str) - bool:return self.getString(scs) self.getString(sct)# 使用栈等于#时就出栈需要注意空栈时不能在出栈不等于#时则入栈。
题目六有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums返回 每个数字的平方 组成的新数组要求也按 非递减顺序 排序。
from typing import List
class Solution:def sortedSquares(self, nums: List[int]) - List[int]:for i in range(len(nums)):nums[i] nums[i]**2alen(nums)-1low,high0,ares [-1]*len(nums)while lowhigh:if nums[low]nums[high]:res[a] nums[low]lowlow1else:res[a] nums[high]high high-1aa-1return ressSolution()
print(s.sortedSquares(nums[-6,-4,-3,0,1,2,3,5]))
# 左右哦两端开始遍历用一个列表来存放遍历结果。
# 原列表的low比high大就把该数据放到res末尾
# 原列表low比high小就把high放到res前面