35. Search Insert Position -- Python

35. Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

Example 1:

Input: [1,3,5,6], 5
Output: 2

Example 2:

Input: [1,3,5,6], 2
Output: 1

Example 3:

Input: [1,3,5,6], 7
Output: 4

Example 1:

Input: [1,3,5,6], 0
Output: 0

思路:
刚看到这个题目以后第一想法是用二分法,然后再递归比较大小好了,因为基础薄弱,想法是这样,实现起来却还是一波三折,最后在讨论区看到人家一条语句就出来了,真的是…

代码:

class Solution:
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        if len(nums)==1:
            if nums[0]>=target:
                return 0
            else:
                return 1
        if len(nums)==0:
            return 0
        if len(nums)>=2:
            z=len(nums)//2
            if nums[z]>=target:
                return self.searchInsert(nums[0:z],target)
            if nums[z] < target:
                return z + self.searchInsert(nums[z+1:],target)+1

人家的代码:

class Solution:
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        return len([x for x in nums if x<target])

我的第一个版本代码:(未能正常运行)

class Solution:
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        def erfen(x,y):
            if len(x) >= 2:
                z=len(x)//2
                if x[z] < y and  (y - x[z] != 1):
                     erfen(x[z+1:],y)
                 elif x[z] > y and (x[z]-y != 1):
                     erfen(x[0:z],y)
                 elif x[z] > y and (x[z] - y == 1):
                     return nums.index(x[z])
                 elif x[z] < y and (y - x[z] == 1):
                     return nums.index(x[z])+1
             elif len(nums)==1:
                 if x[0]>y:
                     return nums.index(x[0])
                 else:
                     return  nums.index(x[0])+1
             elif len(nums)==0:
                 return 0

        counter=nums.count(target)
         if counter==0:
             if nums[0]>target:
                 return 0
             elif nums[-1]<target:
                 return len(nums)
             else:
                 return erfen(nums,target)
         else:
             return nums.index(target)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是由于尝试使用错误的编码解码文本数据引起的。在给定的引用中,错误信息显示了一个`UnicodeDecodeError`,指出在特定位置上的字节无法被正确解码。根据引用内容,有三个引用提到了类似的错误信息,其中一个是`UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 364-365: unexpected end of data`,另外两个是`UnicodeDecodeError: 'utf-8' codec can't decode byte`。这些错误信息表明在读取或解码文件时遇到了编码问题。 解决这个问题的方法是确保使用正确的编码格式来读取和解码文件。根据错误信息,首先,你可以尝试使用`utf-16-le`编码格式来解码文件。你可以使用`open()`函数的`encoding`参数来指定编码格式,例如`open(filename, encoding='utf-16-le')`。如果这仍然无法解决问题,你可以尝试使用`utf-8`编码格式来解码文件,例如`open(filename, encoding='utf-8')`。 另外,还有一种可能性是文件本身使用了其他的编码格式,而不是`utf-16-le`或`utf-8`。如果以上方法仍然无法解决问题,你可以尝试不同的编码格式,例如`latin-1`或`ascii`,直到找到正确的编码格式来解码文件。 总结起来,解决`UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 284-285: illegal encoding`错误的方法是尝试使用正确的编码格式来解码文件,例如`utf-16-le`或`utf-8`,如果仍然无法解决问题,可以尝试其他编码格式,直到找到正确的编码格式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [py读取excel时出现UnicodeDecodeError: ‘utf-16-le‘ codec can‘t decode bytes: unexpected end of data](https://blog.csdn.net/qq_36148463/article/details/130776731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [basemap readshapefile UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 0-附件...](https://download.csdn.net/download/weixin_42195569/15585440)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 2: invalid continuation byte-...](https://download.csdn.net/download/weixin_42204453/15589184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值