力扣高频算法php_一文搞懂常见的数组类算法

3b6e636c5fa35cbc020a23dd1a34eb9f.png

LeetCode 数组类算法总结

数组作为算法面试中出现的高频数据结构。有很多经典的考点知识,比如排序问题,二分搜索等等。本篇文章主要介绍 LeetCode 中典型的数组类问题,主要介绍这类问题的一些常用解法:做好初始定义、基础算法思想应用、对撞指针、滑动窗口法等。

做好初始定义

做数组类算法问题的时候,我们常常需要定义一个变量,明确该变量的定义,并且在书写整个逻辑的时候,要不停的维护住这个变量的意义。也特别需要注意初始值和边界的问题。

283. 移动零

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    let len = nums.length
    let j = 0
    for (let i = 0; i < len; i++) {
        if (nums[i]) {
            nums[j++] = nums[i]
        }
    }
    for (let i = j; i < len; i++) {
        nums[i] = 0
    }
    return nums
};
知乎视频​www.zhihu.com

27. 移除元素

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    let j = nums.length
    let i = 0
    while (i < j) {
        // 遇到相等的就把这个元素丢到末尾去
        if (nums[i] === val) {
            nums[i] = nums[j-1]
            // 同时数组长度-1
            j--
        } else {
            i++
        }
    }
    return i
};
知乎视频​www.zhihu.com

26. 删除排序数组中的重复

知乎视频​www.zhihu.com

80. 删除排序数组中的重复 II

知乎视频​www.zhihu.com

运用基础算法思想

典型的排序算法思想、二分查找思想在解 LeetCode 题目时很有用。

75. 颜色分类

知乎视频​www.zhihu.com

215. 数组中的第K个最大元素

知乎视频​www.zhihu.com
知乎视频​www.zhihu.com

88. 合并两个有序数组

知乎视频​www.zhihu.com

对撞指针

有一些 LeetCode 题目,我们可以采用对撞指针进行求解:指针 i 和 j 分别指向数组的第一个元素和最后一个元素,然后指针 i 不断向前, 指针 j 不断递减,直到 i = j(当然具体的逻辑操作根据题目的变化而变化)。

167. 两数之和 II - 输入有序数组

知乎视频​www.zhihu.com

125. 验证回文串

知乎视频​www.zhihu.com

345. 反转字符串中的元音字母

知乎视频​www.zhihu.com

11. 盛最多水的容器

知乎视频​www.zhihu.com

滑动窗口

一些题目用滑动窗口方法解题,可以将时间复杂度控制在 O(n) 级别,最重要的是定义好滑动窗口,明确它要表达的意思,当然边界和初始值非常重要。

209. 长度最小的子数组

知乎视频​www.zhihu.com

参考资料

力扣​leetcode-cn.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值