博客专栏  >  编程语言   >  算法笔记

算法笔记

基本算法的总结

关注
1 已关注
12篇博文
  • 堆排序算法实现

    思路:先将数组以大根堆形式存取,然后每次将首尾元素替换时,将堆长度减1,最后就是从小到大排列 代码如下: class Solution { public: void heapSort(int num...

    2017-04-07 22:20
    418
  • 单链表的反转

    有两种方法,一种是非递归,另外一种是非递归 非递归算法中,用到三个连续的结点,分别表示p,q,r,其中p.next = q,q.next = r,当然本身链表为空,直接返回null,如果只有一个结点,...

    2016-03-08 21:23
    1012
  • 二叉树遍历的非递归

    前序遍历的非递归:1、在入栈时加入结果集,不停的取左子树入栈,直到为空。2、如果栈非空,pop栈顶结点,取其右子树作为当前结点,继续第一步,直到栈为空 中序遍历的非递归:1、在入栈时,不停的取左子树入...

    2016-03-01 11:54
    670
  • 已知二叉树的前序遍历、中序遍历或者中序遍历、后序遍历求二叉树结构的算法

    二叉树中的前序遍历是先访问根结点,再访问左子树,右子树。 中序遍历是先访问左子树,再是根结点,最后是右子树。 后序遍历是先访问左子树,再是右子树,最后是根结点。 算法思路是先根据前序遍历的第一个...

    2016-01-01 23:40
    1185
  • 判断数组中的重复元素

    问题,有一个n+1个元素的数组,包含1到n的n个数,外加一个重复元素,将这个重复元素找出。 方法一:使用置换法,由于下标是从0开始,如果nums[i]==i+1,说明元素是放在正确的位置,继续判断。如...

    2015-12-20 15:22
    1216
  • 多数投票算法

    在一个数组中,元素个数为n(假设最多投票元素存在),输出元素出现次数大于n/2的数 算法思路:1、一个变量cand表示所求的元素,一个变量count统计个数,将count初始化为0.         ...

    2015-10-08 22:51
    2440
  • 最大子数组乘积算法

    给出一数组a,求最大子数组乘积 算法思路:用动态垃规划.用maxValue(n)表示从0到n的最大子数组乘积,minValue(n)表示从0到n的最小子数组乘积。 状态转移方程为: minVal...

    2015-09-05 11:59
    978
  • 最大子段和

    给出一个数组,求其最大子数组和(要求最少取一个元素) 主要是用动态规划法,用dp(n)表示从0到n之间的最大子数组和。其状态转移方程为dp(n)=dp(n-1) 代码如下: class Solu...

    2015-09-04 11:07
    831
  • 字典序排列的算法

    已知数组长度为n,序列表示为,求其下一个字典序排列。 算法思路:从尾开始,找到,然后从尾到i找到,然后与替换,并且将到之间的数反转 代码如下 class Solution { public: boo...

    2015-08-03 23:00
    375
  • 数组的旋转的解法

    数组长度为n,向右旋转k(0 方法一 (1)    如果k=0或者k=n,直接返回 (2)    否则,将[0,n-1]数组元素反转,然后[0, k-1]返回,[k,n-1]反转 代码如下class...

    2015-08-02 23:53
    506
  • 二分查找法及其应用

    当数据量很大时宜采用该方法,采用二分查找法时,数据需要是排好序的。 一、二分查找法的形式 一种是采用闭区间,即在[low,high]之间查找,另外一种形式是左开右闭区间,形如[low,high) 如果...

    2015-07-15 22:56
    644
  • 矩阵旋转的算法

    对于 n*n矩阵旋转,取矩阵元素时从下标0开始,则(x,y)旋转后的位置为(y,n-1-x),在不考虑空间的情况下,可以遍历矩阵,根据旋转关系将元素填入新矩阵对应位置即可 伪代码为 for i = 0...

    2015-07-18 11:52
    940
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部