代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
题目链接:https://leetcode.cn/problems/binary-search/
1、描述:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
错误的地方:
一开始写了调用的时候没有返回结果,输出null,确定是重复调用的时候应该返回每次的结果
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
mid_index = int(len(nums)/2)
if mid_index == 0:
if target == nums[0]:
return 0
else:
return -1
if target == nums[mid_index]:
return mid_index
elif target< nums[mid_index]:
self.search(target=target, nums=nums[0:mid_index])
else :
self.search(target=target, nums=nums[mid_index:])
修改返回加了return之后还是没有全部正确,因为我返回的是当前数组的序号,不是原来数组的序号,所以我在后面加了len
但是如果-1的时候,是不需要加len的,表示找不到,直接返回就可以了,最后修改成这样啦,哈哈哈
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
mid_index = int(len(nums)/2)
if target == nums[mid_index]:
return mid_index
else:
if len(nums) == 1:
return -1
else:
if target< nums[mid_index]:
res = self.search(target=target, nums=nums[0:mid_index])
if res == -1:
return -1
elif res == 0:
if len(nums[0:mid_index]) == 1:
return 0
else:
return res
else:
return res
else :
res = self.search(target=target, nums=nums[mid_index:])
if res == -1:
return -1
elif res == 0:
if len(nums[mid_index:]) == 1:
return 0
else:
return res
else:
res += mid_index
return res
2\
题目链接:https://leetcode.cn/problems/remove-element/
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
看不懂原地是啥意思
是移除元素就可以了吗?
后面发现不是,如果只是循环的话,由于每次remove的时候nums会变,导致结果不对,后面加了一个调用就好了
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
for i in nums:
if i == val:
nums.remove(i)
return self.removeElement(nums, val)
第一天打开结束~~

浙公网安备 33010602011771号