Facebook面试题专题1 - leetcode88. Merge Sorted Array★/278. First Bad Version - Easy

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a786150017/article/details/84842229

88. Merge Sorted Array

微软实习面试题

题目描述

给定两个有序整数数组nums1和nums2,合并两者成一个有序数组。

nums1和nums2的元素数目分别是m和n。假设nums1有足够空间(≥m+n)来容纳来自于nums2的元素。

例子

Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]

思想
要求是原地修正
(法1) - Trick
从后向前比较,较大的元素从nums1尾部开始放。
(法2)
从前向后比较,较小的元素从nums1尾部开始放,然后逆序nums。

解法

```python
class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        while m and n:
            if nums1[m-1] > nums2[n-1]:
                nums1[m+n-1] = nums1[m-1]
                m -= 1
            else:
                nums1[m+n-1] = nums2[n-1]
                n -= 1
        if n:
            nums1[:n] = nums2[:n]

278. First Bad Version

题目描述

你是PM且现在领导团队开发一个新产品。不幸的是,最新版的产品有质量问题。因为每个版本都是基于上个版本产品开发的,所以质量差的产品会延续给下一代产品。
假设你有n代产品[1, 2, …, n],想找到第一个坏的版本。

给定一个API名为 isBadVersion(version),返回version是否是坏的。编写函数找到第一个坏的版本。(最小化调用API的次数)

例子

Given n = 5, and version = 4 is the first bad version.
call isBadVersion(3) -> false
call isBadVersion(5) -> true
call isBadVersion(4) -> true
Then 4 is the first bad version.

思想
二分,找到第一个为 isBadVersion(version)返回为true的版本。

解法

# 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
        """
        l, r = 1, n
        while l <= r:
            mid = (l + r) >> 1
            if isBadVersion(mid):
                if mid == 1 or not isBadVersion(mid-1):
                    return mid
                r = mid - 1
            else:
                l = mid + 1     

猜你喜欢

转载自blog.csdn.net/a786150017/article/details/84842229
今日推荐