26、删除有序数组中的重复项
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目:给定一个 非严格递增排列 的数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums
中唯一元素的个数。
考虑 nums
的唯一元素的数量为 k
,你需要做以下事情确保你的题解可以被通过:
- 更改数组
nums
,使nums
的前k
个元素包含唯一元素,并按照它们最初在nums
中出现的顺序排列。nums
的其余元素与nums
的大小不重要。 - 返回
k
。
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
fast = 0 # 快指针,循环所有的数组值
slow = 0 # 慢指针,保留唯一的值
while fast < len(nums):
if nums[slow] == nums[fast]:
nums[slow] = nums[fast]
fast = fast + 1
if nums[slow] != nums[fast]:
slow = slow + 1
nums[slow] = nums[fast]
fast = fast + 1
return slow + 1
283、移动零
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目:给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
slow = 0
# 保持非零元素的相对顺序
for fast in range(len(nums)):
if nums[fast] !=0:
nums[slow] = nums[fast]
slow = slow + 1
# 将所有 0 移动到数组的末尾
while slow < len(nums):
nums[slow] = 0
slow = slow + 1
return nums
844、比较含退格的字符串
题目链接:https://leetcode.cn/problems/backspace-string-compare/description/
题目:给定 s
和 t
两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true
。#
代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
class Solution(object):
def backspaceCompare(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
ss = ""
tt = ""
for i in s:
if i=="#":
ss = ss[:-1] # 字符串回退一格
else:
ss = ss + i
for j in t:
if j=="#":
tt = tt[:-1]
else:
tt = tt + j
if ss==tt:
return True
else:
return False
977、有序数组的平方
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目:给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
# 已知,该数组是非递减顺序排序的整数数组,因此只需要与最大值进行比较
start = 0
finish_l = len(nums) - 1
news = len(nums) - 1
ss = [0] * len(nums)
# 注意这个start和finish_l是会改变的
while start <= finish_l:
if nums[start] * nums[start] > nums[finish_l] * nums[finish_l]:
ss[news] = nums[start] * nums[start]
start = start + 1
else:
ss[news] = nums[finish_l] * nums[finish_l]
finish_l = finish_l - 1
news = news - 1
return ss