美文网首页
2019.4.9胡凡算法笔记

2019.4.9胡凡算法笔记

作者: sure_风雨与晴 | 来源:发表于2019-04-09 22:12 被阅读0次

1.1 二维整点P的坐标映射

如何将二维整点P的坐标映射为一个整数,为一个整数,使得整点P可以由该整数唯一地代表。假设一个整点P的坐标(x,y),其中0≤x,y≤Range,那么可以令hash函数为H(P) = x * Range + y

1.2字符串hash

指将一个字符串S映射为一个整数。假设字符串均由大写字母AZ构成,对应026,接下来就按照将二十六进制转换为十进制的思路,(转换成的整数最大是26^len-1)代码如下:

int hashFunc(char S[], int len)
{
    int id = 0;
    for (int i=0; i<len; i++)
    {
        id = id*26 + (S[i] - 'A');  二十六进制转换为十进制
    }
    return id;
}

使用时注意len不能太长,否则转换出的整数也会很大。如果字符串中出现了小写字母,那么可以把AZ作为025,而把az作为2651,这样就变成了一个五十二进制转换为十进制的问题,相似:

int hashFunc(char S[], int len)
{
    int id = 0;
    for (int i=0; i<len; i++)
    {
        if (S[i] >= 'A' && S[i] <= 'Z')
            id = id * 52 + (S[i] - 'A');
        else if(S[i] >= 'a' &&S[i] <= 'z')
            id = id * 52 + (S[i] - 'a') + 26;
    }
    return id;
}

相关文章

  • 2019.4.9胡凡算法笔记

    1.1 二维整点P的坐标映射 如何将二维整点P的坐标映射为一个整数,为一个整数,使得整点P可以由该整数唯一地代表。...

  • 2019.4.10胡凡算法笔记

    1.N位数字与数组的转化 将N位数字的每一位存储在数组中 将数组中的数字组成N位数字 2.最大公约数和最小公倍数 ...

  • 2019.4.23胡凡算法笔记

    二维数组 如果数组较大(比如10^6级别),则需要将其定义在主函数外,否则会使程序异常退出。因为函数内部申请的局部...

  • 2019.4.24胡凡算法笔记

    const与#define的差异 (0) 相同 两者都可以用来定义常量; (1) 编译器处理方式不同 defi...

  • 二叉树 | 哈夫曼树

    参考:胡凡,曾磊「算法笔记」,emmmmm算是梳理吧。图片和部分描述均来自此书~ 引:合并果子问题 n堆已知质量的...

  • AVL tree | 平衡二叉树

    参考:胡凡,曾磊《算法笔记》 引子 使用有序序列构建BST会形成链式的二叉树,此时查找的复杂度会达到O(n),达不...

  • 堆 | 定义、操作、堆排序

    参考:胡凡,曾磊《算法笔记》 定义 堆是一棵完全二叉树。 完全二叉树:结点数量n,叶子结点数ceiling(n/2...

  • Binary Search Tree | 二叉查找树

    参考书:胡凡、曾磊《算法笔记》 二叉查找树BST 又称为排序二叉树、二叉搜索树、二叉排序树 BST 是数据域有序的...

  • 二叉树 | 定义、性质、操作

    内容参考自胡凡,曾磊 《算法笔记》 二叉树的递归定义 递归边界:二叉树没有根结点,是一棵空树。 递归式:二叉树由根...

  • 算法笔记 晴神(胡凡等著) 完整pdf下载

    C/C++快速入门、入门模拟、算法初步、数学问题、C++标准模板库(STL)、数据结构专题(二章)、搜索专题、图算...

网友评论

      本文标题:2019.4.9胡凡算法笔记

      本文链接:https://www.haomeiwen.com/subject/ghzbiqtx.html