美文网首页
数据结构与算法(第三季):头条、美团、滴滴等面试题01

数据结构与算法(第三季):头条、美团、滴滴等面试题01

作者: 萧1帅 | 来源:发表于2022-02-25 17:56 被阅读0次

    第一题:88. 合并两个有序数组

    一、题目描述

    image

    二、思路

    • 此题涉及归并排序思想。
    • 搞两个指针,分别指向nums1nums2两个数组最后一个元素,即36。再拿一个指针指向nums1最后一个位置。
    • 拿出nums1nums2两个数组最后一个元素进行比较,将两者中较大值放在nums1最后一位指针处,并将该指针位置向前移动一位。并且较大值数组指针也向前移动一位
    • 循环以上步骤,直到nums2数组下标小于0,则排序完成。
    • nums1数组下标小于0,则只需要将nums2数组剩余值依次赋给nums1即完成排序。

    三、代码实现

    image

    作者提示:小码哥的实现不严谨,如果num1的空间大于m+n,会导致错误。所以cur = m + n - 1

    第二题:75. 颜色分类

    一、题目描述

    image

    二、思路

    • 该题目进阶要求空间复杂度O(1),时间复杂度O(n)
    • 一般题目涉及扫描一遍即完成排序的,都会涉及双指针三指针
    • 该题需要准备三个指针紫色指针代表存放2绿色指针代表存放0红色指针代表遍历数组
    • 红色指针遍历时,遇到1则跳过,红色指针++,遇到0则跟绿色指针交换值,绿色指针++,红色指针++。
    • 遇到2,跟紫色指针交换位置,紫色指针--,再次对红色指针的值进行判断。
    • 红色指针的下标大于紫色指针,则退出排序。
    image

    三、代码实现

    image image

    第三题:16.16.部分排序类

    一、题目描述

    image

    二、思路

    • 该题目思路是寻找逆序对
    • 分别从左往右从右往左找到逆序对,这样即可确定范围。
    • 从左往右扫描,记录最大值,如果发现当前值小于最大值,则记录它的位置(有可能是逆序对最大范围),如果当前值大于最大值,则覆盖最大值
    • 从右往左扫描,记录最小值,如果发现当前值大于最小值,则记录它的位置(有可能是逆序对最大范围),如果当前值小于最小值,则覆盖最小值
    • 两次扫描记录的位置范围,就是需要排序的范围。

    三、代码实现

    image image

    相关文章

      网友评论

          本文标题:数据结构与算法(第三季):头条、美团、滴滴等面试题01

          本文链接:https://www.haomeiwen.com/subject/bsgxrrtx.html