- 删除有序数组中的重复项 II
ts
function removeDuplicates(nums: number[]): number {
let i = 1
while (i < nums.length) {
if (nums[i + 1] === nums[i] && nums[i - 1] === nums[i]) {
nums.splice(i, 1)
} else {
i++
}
}
return nums.length
}
py
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i = 1
while i < len(nums):
if i<len(nums)-1 and nums[i] == nums[i+1] and nums[i] == nums[i-1]:
nums.pop(i)
else:
i += 1
return len(nums)
- 搜索旋转排序数组 II
ts
function search(nums: number[], target: number): boolean {
const nums2: number[] = Array.from(new Set(nums))
const chaifen = (s: number, e: number): boolean => {
if (e - s <= 1) {
return target === nums2[s] || target === nums2[e]
}
const cen = Math.floor((s + e) / 2)
if (nums2[cen] > nums2[s]) {
// 前半段递增
if (target >= nums2[s] && target <= nums2[cen]) {
for (let i = s; i <= cen; i++) {
if (target < nums2[i]) {
return false
}
if (target === nums2[i]) {
return true
}
}
} else {
return chaifen(cen, e)
}
} else {
// 后半段递增
if (target >= nums2[cen] && target <= nums2[e]) {
for (let i = cen; i <= e; i++) {
if (target < nums2[i]) {
return false
}
if (target === nums2[i]) {
return true
}
}
} else {
return chaifen(s, cen)
}
}
return false
}
return chaifen(0, nums2.length - 1)
}