首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
算法
订阅
hello_奥特曼
更多收藏集
微信扫码分享
微信
新浪微博
QQ
29篇文章 · 0订阅
动态规划套路详解
前一篇博客总结了动态规划,但是对于我这初学者,还是很多地方不能理解,所以我就在网上找到了一个大神的讲解,确实很棒。 1. 动态规划套路详解 下面通过对斐波那契数列和这道凑零钱问题详解动态规划。如果只想看本题的答案,请直接翻到最后查看。 动态规划算法似乎是一种很高深莫测的算法,你…
动态规划怎么用?
动态规划适用于子问题不是独立的情况,即各个子问题之间包含公共的子问题。动态规划对每个子问题只计算一次,保存其计算结果到"一张表",重复利用,从而优化执行。 以斐波那契数列为例。一般的求解方式为递归,运行时间为 (),空间为O(1) 可以简要分析下这个执行过程:要去求解 fib(…
排序算法总结
依次选择一个待排序的数据,插入到前边已排好序的序列中。 时间复杂度为$O(N^2)$,空间复杂度为$O(1)$。算法是稳定的,比较次数和交换次数都与初始序列有关。 直接插入排序每次往前插入时,是按顺序依次往前找,可在这里进行优化,往前找合适的插入位置时采用二分查找的方式,即折半…
Java动态规划
1. 介绍 动态规划典型的被用于优化递归算法,因为它们倾向于以指数的方式进行扩展。动态规划主要思想是将复杂问题(带有许多递归调用)分解为更小的子问题,然后将它们保存到内存中,这样我们就不必在每次使用它们时重新计算它们。 本文所有代码均为java代码实现。 2. 什么是动态规划?…
看动画轻松理解时间复杂度(一)
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,比如排序就有前面的十大经典排序和几种奇葩排序,虽然结果相同,但在过程中消耗的资源和时间却会有很大的区别,比如快速排序与猴子排序:)。 主要还是从算法所…
我们来玩游戏吧(一)
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一…
算法学习思路
很多前端童鞋对算法都有莫名的恐惧,究其原因无非两点:其一,对算法不了解;其二,没有找到实际应用场景。 这是个很有意思的问题,对算法感兴趣的人,不需要问为什么,算法对他们可能是一种兴趣。曾经有位同事,他刷遍了所有算法题,只要有算法竞赛,他都会去参加。当然,也取得了不错的成绩,甚至…
剑指offer解析-下(Java实现)
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 典型的二叉树分解问题,我们可以定义一个黑盒transform,它的目的是将二叉树转换成双向链表,那么对于一个当前结点root,首先将其前驱结点(BST中前驱结点指…
八大基础排序总结
俩俩交换,大的放在后面,第一次排序后最大值已在数组末尾。 在数组中找一个元素(节点),比它小的放在节点的左边,比它大的放在节点右边。一趟下来,比节点小的在左边,比节点大的在右边。 不断执行这个操作.... 快速排序用递归比较好写【如果不太熟悉递归的同学可到:递归就这么简单】。支…
快速排序就这么简单
从前面已经讲解了冒泡排序、选择排序、插入排序了,本章主要讲解的是快速排序,希望大家看完能够理解并手写出快速排序的代码,然后就通过面试了!如果我写得有错误的地方也请大家在评论下指出。 快速排序是面试出现的可能性比较高的,也是经常会用到的一种排序,应该重点掌握。 前面一个章节已经讲…