#java算法
递归与分治,动态规划,贪心算法,回溯法
信徒favor
这个作者很懒,什么都没留下…
展开
-
【java算法】二分查找和它的变式题
二分查找算法一个简单的查找算法其实也有很多坑:1、注意left和right的定义,一定是-1,不然会死循环2、mid需要写成上述形式,这样数据量过大时也可以进行运算3、注意break;变式一这时面试官觉得你的代码不错,可能就会问了,如果要查找的数存在多个怎么才能找到最左边的值例:1,2,2,2,2,2,3 查找2此时需要将else块的代码改写:public static int FindValue1(int []arr,int val){ int pos=-1;原创 2020-07-21 22:01:57 · 239 阅读 · 0 评论 -
【java算法】贪心算法-(贪心算法的基本要素、最小生成树、哈夫曼编码)
文章目录贪心算法贪心算法与动态规划的区别贪心算法假设有4种硬币,它们的面值分别为二角五分、一角、五分和一分。现在要找给某顾客六角三分钱。这时,很自然会拿出2个二角五分的硬币,1个一角的硬币和3个一分的硬币交给顾客。这种找硬币的方法与其他找法相比,所拿硬币个数是最少的。其实这里用到的找硬币算法就是:首先选出一个面值不超过六角三分的最大硬币,即二角五分,然后从剩下的硬币中选出面值不超过三角八分的最大硬币,一直如此下去直到找到。这个找硬币的方法实际上就是贪心算法。贪心算法总是做出在当前看来最好的选择,也就是原创 2020-08-02 16:23:34 · 1659 阅读 · 0 评论 -
【算法】动态规划(矩阵连乘问题、最长公共子序列、0-1背包问题)
动态规划动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适用于用动态规划求解问题的时候,经分解得到的子问题往往不是相互独立的。若用分治法解这类问题,则分解得到的子问题数目太多,以至于最后解决原问题需要消耗指数时间。然而,不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复的计算,从而得到多项式时间算法原创 2020-06-23 14:52:16 · 1997 阅读 · 0 评论 -
【算法】递归与分治策略——二分查找、归并排序、快排、最接近点对问题
文章目录递归分治二分搜索技术归并排序快排递归法分解函数合并非递归法递归找第k小第二种分解函数随机数分解函数最接近点对问题递归递归:直接或间接的调用自身的算法称为递归算法实现递归调用的关键是为算法建立递归调用工作栈。通常,在一个算法中调用另一算法时,系统需要在运行被调用算法之前先完成3件事:将所有实参指针,返回地址等信息传递给被调用算法;为被调用算法的局部变量分配存储区;将控制转移到被调用算法的入口;在从被调用算法返回调用算法时,系统也相应地要完成3件事:保存被调用算法的计算结果;释放原创 2020-05-20 23:13:18 · 1607 阅读 · 0 评论