数据结构与算法
数据结构与算法
roctp
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一文彻底解决双指针问题
1.算法思想 双指针主要用于遍历数组,俩指针指向不同的元素,彼此协同完成计算。 主要包括:左右指针与快慢指针 1. 左右指针 167.两数之和 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例: 输入: numbers = [2, 7原创 2020-12-21 23:25:35 · 681 阅读 · 0 评论 -
一文快速掌握二分查找(解题思路与基本模板)
二分查找是计算机科学中最基本、最有用的算法之一。它描述了在有序集合中搜索特定值的过程。 二分法的常用术语为 1.target目标值 2.index目标的索引 3.left、right、mid三个索引 二分法的精髓 在于,每次运算可以去除一半的不符合条件的元素。很大程度的减小了时间复杂度 二分法解题步骤: 1.预处理过程(将无序数组排序成有序数组) 2.二分查找(找到合适的判断条件,每次可以筛选掉一半的不符合条件的元素) 3.后处理过程(不断查找直到找到目标值) 二分查找基本模板 public int bin原创 2020-12-11 19:35:03 · 320 阅读 · 0 评论 -
动态规划问题相关解法
动态规划 该算法的简单概括就是:记住你之前做过的事 算法流程: 1)问题拆解,找到问题之间的具体联系 2)状态定义 3)递推方程推导 4)实现 例题1: 爬楼梯(LeetCode 第 70 号问题)。 题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 解题思路: 1)到达第n阶的方法数为第n-1和第n-2种方法之和 2) 第i个状态定义成到 i 阶台阶的方法数 3) a[n]=a[n-1]+a原创 2020-12-06 21:44:31 · 172 阅读 · 0 评论 -
最简单的文字与代码——了解七大排序算法
排序算法是最基础的算法之一 1.冒泡排序 从第一个元素开始比较相邻元素,若第一个元素比第二个大,则交换他们的顺序 重复操作直到最后一个元素,一组操作下来最后一个元素是这组元素的最大值 重复上述操作,除了最后一个元素 直到没有元素可以比较,结束排序 //已知将要比较的数组arr[], for(int i=1;i<arr.length;i++){ for(int j=0;j<arr.length-i;j++){ //比较相邻元素的大小 if(a[j]>a[j+1]){ i原创 2020-12-05 23:52:42 · 535 阅读 · 0 评论 -
复杂度分析
算法(Algorithm) 是指用来操作数据、解决程序问题的一组方法。 不同的算法能得出相同的结果,但是不同的算法所需要消耗的时间和空间是不一样的,所以我们对于算法优劣的衡量主要是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。 对于时间维度: 「 大O符号表示法 」,即 T(n) = O(f(n))。 常数阶O(1) --------(普通操作)原创 2020-12-04 17:01:55 · 260 阅读 · 0 评论
分享