| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构】数组中的问题 -> 正文阅读 |
|
[数据结构与算法]【数据结构】数组中的问题 |
常见的数组问题
如何写出正确的程序example:二分查找法 番外篇:二分查找法的思想在1946年提出的,第一个没有bug的二分查找法在1962年才出现。说明一个道理:真正的实现一个完全正确的算法是复杂的,只是思考算法的思想却是简单的。 对于有序数列,才能使用二分查找法(排序的作用) 代码实现
注意点: 1、LeetCode -283移动零这里举一个例题: 解法一:暴力法思路:从后向前找0,找到之后,后面的元素前移,将最后一个元素设置为0。 时间复杂度:O(n^2) 解法二:排队找空位,向前推进思路:
时间复杂度:O(n) 解法三:双向指针思路:
2、计数排序和三路快排这里举一个例题: 在没有思路的情况下,我们可以使用任意的排序算法 。 在此我们使用计数排序和三路快排来解决这个问题。 计数排序适用元素个数非常有限的情况,在此题中我们分别统计0,1,2出现的次数。
三路快排:Quick Sort3 Ways合并和使用快速排序法排序快排的思想:
时间复杂度:O(nlog(n)) 使用双指针方法一没有利用数组nums1和nums2 已经被排序的性质 空间换时间,创建大小为m+n的数组,将nums1和nums2的元素比较后放入新数组中。 时间复杂度:O(m+n) 3、碰撞指针这里举一个例题: 根据题目要求:
解法一:暴力法,双层循环
解法二:碰撞指针4、滑动窗口(双向指针的扩展)这里举一个例题: 情况一
情况二
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 11:38:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |