35搜索插入位置——力扣算法系列2020.07.17 Python

第23天
2020.07.17 周五
难度系数:简单
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。

示例 1:

输入: [1,3,5,6], 5
输出: 2
示例 2:

输入: [1,3,5,6], 2
输出: 1
示例 3:

输入: [1,3,5,6], 7
输出: 4
示例 4:

输入: [1,3,5,6], 0
输出: 0

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
——————————我是分割线——————————
解法:
思路:遍历数组元素,寻找是否存在和target相等的元素,如果存在,则标记存在并返回下标值;遍历结束如果不存在,则利用bisect()函数找到并返回插入元素位置下标。
这道题其实和之前有一道很相似,甚至简单很多。上链接:315计算右侧小于当前元素的个数——力扣算法系列2020.07.11 Python

补充相关知识:(点击下面蓝色字即可进入学习)
enumerate函数
bisect函数

代码:

# leetcode35搜索插入位置 2020.07.17
import bisect
class Solution(object):
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        flag = 0 #标记
        for i,k in enumerate(nums): #得到nums的索引i和值k
            if target==k: #如果目标值和nums中某值相等
                flag = 1 #则标记已找到
                return i #并返回索引i
        if flag==0: #遍历结束 如果标记未找到
            position = bisect.bisect(nums,target) #则利用bisect函数返回要插入的位置的索引
            return position

nums = [1,3,5,6]
# target = 5 #结果2
target = 2 #结果1
print(Solution().searchInsert(nums,target))

35搜索插入位置——力扣算法系列2020.07.17 Python_第1张图片

你可能感兴趣的:(35搜索插入位置——力扣算法系列2020.07.17 Python)