提交 5ecbd005 编写于 作者: 檀越@新空间's avatar 檀越@新空间 🐭

fix:合并两个有序数组

上级 bdb0d458
此差异已折叠。
"""
搜索插入位置
"""
from typing import List
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
"""
双指针
:param nums:
:param target:
:return:
"""
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left += 1
else:
right -= 1
return left
def searchInsert2(self, nums: List[int], target: int) -> int:
"""
双指针
:param nums:
:param target:
:return:
"""
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return left
if __name__ == '__main__':
result = Solution().searchInsert([1, 3, 5, 6], 4)
print(result)
"""
加一
"""
from typing import List
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
"""
加一
:param digits:
:return:
"""
if not digits:
return None
s = ''
res = []
for value in digits:
s = s + str(value)
for i in str(int(s) + 1):
res.append(int(i))
return res
def plusOne2(self, digits: List[int]) -> List[int]:
"""
解法一的一行写法
:param digits:
:return:
"""
return [int(i) for i in str(int(''.join([str(j) for j in digits])) + 1)]
def plusOne3(self, digits: List[int]) -> List[int]:
"""
常规解法
:param digits:
:return:
"""
plus = 1
for i in range(len(digits) - 1, -1, -1):
if digits[i] + plus == 10:
digits[i] = 0
plus = 1
else:
digits[i] += plus
plus = 0
if plus == 1:
digits.insert(0, 1)
return digits
if __name__ == '__main__':
result = Solution().plusOne3([1, 2, 3])
print(result)
"""
合并两个有序数组
"""
from typing import List
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
先填充后面的,再填充前面的
"""
if not nums2:
return
len1 = m - 1
len2 = n - 1
k = m + n - 1
while len1 >= 0 and len2 >= 0:
if nums1[len1] > nums2[len2]:
nums1[k] = nums1[len1]
len1 -= 1
else:
nums1[k] = nums2[len2]
len2 -= 1
k -= 1
if len2 >= 0:
# 切片赋值,切片是不包含尾部的
nums1[:len2 + 1] = nums2[:len2 + 1]
return nums1
if __name__ == '__main__':
Solution().merge([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册