
算法
文章平均质量分 53
仰望星空01
不负韶华,砥砺前行!
展开
-
常见的排序算法
排序算法 冒泡算法 //冒泡排序 时间复杂度O(n2) //优化方案:设置flag 是否交换 func bubbleSort(list: inout Array<Int>) { var isSwap = false//优化 for i in 0..<list.count { isSwap = false for k in 0..<(list.count - i - 1) { if list[k] > lis原创 2021-02-26 21:01:05 · 112 阅读 · 0 评论 -
力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。
力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。 示例 2...原创 2020-04-17 09:44:34 · 3196 阅读 · 0 评论 -
面试算法之:如何判断链表是否有环
如何判断链表是否有环方法一:双重循序遍历代码如下方法二:把之前的遍历的结果实现存储起来方法三:如果环形跑道,速度不同时,两个人一定会相遇。代码 方法一:双重循序遍历 从头节点开始,一次遍历单链表的,每一个人节点。没遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和之前所有的节点一次比较,如果发现和之前的某一个节点相同 ,则说明该节点被遍历两次,说明环。 缺点:时间复杂度O(n^2)太高,空...原创 2019-08-13 16:39:25 · 483 阅读 · 3 评论 -
面试算法之求最大公约数
题目:求两个数的最大公约数,要尽量优化算法的性能 方法一:暴力枚举是绝对不可取的,效率不高如果我们传入的整数是10000和10001,那我们需要循环10000 / 2 - 1 = 4999 for(int i = small / 2; i > 1; i--) { if(small % i == 0 && big % i == 0) { return i; } } ...原创 2019-08-13 20:35:16 · 249 阅读 · 0 评论