• leepcode题目解析5


    22、缺失数字

    给定一个包含 0, 1, 2, ..., nn 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。

    示例 1:

    输入: [3,0,1]
    输出: 2
    

    示例 2:

    输入: [9,6,4,2,3,5,7,0,1]
    输出: 8
    
    class Solution(object):
        def missingNumber(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            if nums == [0]:
                return 1
            else:
                nums.sort() 
                for i in range(len(nums)):
                    if nums[i] != i:  ##因为数组是0-n,所以如果数字中的索引值不等于数字中的元素值,那这个索引值就是缺失的元素值。
                        return i
                return nums[-1]+1  ## 如果for循环内返回的是空值,则最后一个值+1(如果数组缺失的是最后一个值,那么for循环取出来的值就会是空值)
                
    

    23、第一个错误的版本

    你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。

    假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。

    你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。

    示例:

    给定 n = 5,并且 version = 4 是第一个错误的版本。
    
    调用 isBadVersion(3) -> false
    调用 isBadVersion(5) -> true
    调用 isBadVersion(4) -> true
    
    所以,4 是第一个错误的版本。 
    

    解答:使用了二分法解题,二分法排除

    # The isBadVersion API is already defined for you.
    # @param version, an integer
    # @return a bool
    # def isBadVersion(version):
    
    class Solution(object):
        def firstBadVersion(self, n):
            """
            :type n: int
            :rtype: int
            """
            left = 1
            right = n  # type:int
            while left <=right:
                mid = (left + right) //2
                if isBadVersion(mid):
                    right = mid -1
                else:
                    left = mid +1
            return (left)
    

    24、移动零

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    示例:

    输入: [0,1,0,3,12]
    输出: [1,3,12,0,0]
    

    说明:

    1. 必须在原数组上操作,不能拷贝额外的数组。
    2. 尽量减少操作次数。

    解答:

    class Solution(object):
        def moveZeroes(self, nums):
            """
            :type nums: List[int]
            :rtype: None Do not return anything, modify nums in-place instead.
            """
            # j = 0
            # if len(nums) == 1:
            #     return nums
            # else:
            #     for i in range(len(nums)):
            #         if 1nums[i] != 0:
            #             nums[j] = nums[i]
            #             nums[i] = 0
            #             j +=1
            # #     return nums
            # j = 0
            # if len(nums) == 1:
            #     return(nums)
            # elif len(nums) ==2:
            #     if nums[0] == 0:
            #         nums[0],nums[1] =nums[1],nums[0]
            #         return(nums)
            #     else:
            #         return nums
            # if len(nums)>2:
            #     for i in range(len(nums)):
            #         if nums[i] != 0:
            #             nums[j] = nums[i]
            #             nums[i] = 0
            #             j +=1
            #     return(nums)    
            nums.sort(key=bool, reverse=True)
    
  • 相关阅读:
    馒头国家标准公布:应是圆形或椭圆形(图)
    完全用C#写的SharpOS 0.0.1版发布
    c#操作c/c++的Dll文件
    研究发现GSM信号影响睡眠
    解决QQ与360的终极解决方案
    分享一个参数检查的类
    问题是问题,可是出路呢?
    读《码斗士修炼之路》有感
    我看博客园之争论
    关于ORM的一点思考
  • 原文地址:https://www.cnblogs.com/raynduan/p/10902389.html
Copyright © 2020-2023  润新知