| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构:数组总结 -> 正文阅读 |
|
[数据结构与算法]数据结构:数组总结 |
数组分为静态数组和动态数组,数组是存放在连续内存空间上的相同类型数据的集合。
而动态数组是可以改变数组长度的,直接调用具体方法add(),remove()等等。 数组中还有一种类别多维数组,以二维数组,二维数组的每一行头结点的地址是没有规则的,更谈不上连续。 这里给大家介绍几种数组解决题的方法:1.二分法 2.双指针 3.滑动窗口 二分法:二分法是由前提条件的,使用二分法的数组为有序数组,且查找的值不重复。
示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输入: nums = [-1,0,3,5,9,12], target = 2 提示: 你可以假设 nums 中的所有元素是不重复的。
双指针:快慢指针法,通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
滑动窗口:滑动窗口可分为固定大小和不固定大小 本题中,主要要理解滑动窗口如何移动 窗口起始位置,达到动态更新窗口大小的,从而得出长度最小的符合条件的长度。 滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输入:target = 4, nums = [1,4,4] 输入:target = 11, nums = [1,1,1,1,1,1,1,1] 提示: 1 <= target <= 109
除了这些,还有暴力解法,时间复杂度较高,尽量不使用。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:20:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |