力扣
早睡早起爱学习i
菜菜菜菜
展开
-
查找算法
1.二分查找:(1).递归版本://二分查找递归版本int BinarySearch(vector<int>& nums, int start, int end,int value){ int mid = (start + end) / 2; //首先比较mid处的值 if (nums[mid] == value) return mid; if (nums[mid] > value) //大了就移动right return Bin原创 2020-10-23 11:46:24 · 97 阅读 · 0 评论 -
排序算法
算法时间复杂度分析方法:a 为子问题的个数 n/b 为子问题的规模大小 f(n)为子问题的时间复杂度1. 直接插入排序:算法思想: 外层循环 1~n来遍历数组的每一个元素;遍历到当前元素时,首先需要设置哨兵来记录当前的值(tmp),然后依次比较前面的所有元素值,比较后进行移动处理。算法时间复杂度: 设总共有n个元素,则算法会执行n-1趟,最坏条件下当处理到第i个元素时需要和前(0 ~ i-1)个元素都进行比较,复杂度如下图。最坏条件原创 2020-10-23 11:39:02 · 142 阅读 · 0 评论 -
力扣专题. 回溯法
1. 回溯法与深度遍历的联系以及不同点:回溯法采用试错的思想,它尝试分步的去解决一个问题。当它发现分步的答案不能得到有效的解决时就会退回上一步甚至上几步。回溯法通常用递归的方法来解决。深度遍历是树的一种遍历方法,它强调的是一头扎到底然后再往回走的途中去遍历其它结点,这个过程会一直持续到初始的根结点。2.回溯法与动态规划的区别和共同点:共同点:一个问题都能够分为很多步骤来解决;每一个步骤包含了很多种选择;不同点:动态规划强调的是问题的最优解,它只需要知道最终的结果;回溯可以搜索到问原创 2020-10-06 19:25:27 · 598 阅读 · 0 评论