IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> `算法题解` `AcWing` 4611. 串联数字 -> 正文阅读

[数据结构与算法]`算法题解` `AcWing` 4611. 串联数字

@[目錄](目錄)

題目鏈接

#題解

題目倒不難, 算法思路也容易想到; 可是… 題目考的是(卡時間)

對於每個數A, 放入A*10, A*100, A*..., A*10^10即, 需要一個: unordered_map< int, int> cont[ 10]的結構兩次for( N)的循環, 一次是正向, 一次是逆向; (也可以一次for循環, 但那樣, 又需要一個map來記錄, 空間更大了; 其實卡時間, 不會在出這種問題上, 因為這是線性的沒關係的)

他的時間是: 2 * N * 10 * log(M) ; N是2e5, M是2e5(有10個哈希表, 一個哈希表是最多2e5個) , 即2e5 * 600 = 1e8; **對時間, 一定要精確的計算!! ** (看似可以, 但遇到這種情況, 往往就是卡常數, 經常出現的地方 , 時間非常極限, 但要知道哈希表map 的常數, 是很大的!!!)這道題, 卡時間卡的非常嚴格…


即, 此時要手寫哈希表;

unordered_map< int, int> cont[ 10]这个结构, 他是两个key: {a, b} -> int
其中, a是下标[0 - 9], b是个[0, 1e9]的值


方式一:
int Hash_cont_id[ 10][ Hash_size_];
int Hash_cont_val[ 10][ Hash_size_];

照猫画虎, 上面是10个哈希表, 这里也(手写10个哈希表)!
一个哈希表里, 最多是2e5个元素;

这里说下结论:
(1, 如果用朴素线性探测, 是会超时的… 不管Hash_size_是多少)
(2, 如果用平方探测, Hash_size_取到: 600009时, 可以通过)
(3, 不管怎么, Hash_size_必须是质数!!)


方式二:
有时也不要太单板, 对于:{a, b} -> int
其实我们在unordered_map时, 也不需要非得是10个哈希表; 用一个就可以了;
因为: a=[0-9], b=[0,1e9], 那么, 我们在哈希里讲过, 固定长度的元组的哈希, 此时用: b * 10 + a, 就可以映射成一个LL数, 是不冲突的;
… 从实际来看, 我们把两者哈希到一起从而全放到一个哈希表里, 比上面的用10个哈希表的方式, 要更好;
… (什么原因呢? 理论上他俩是一样的, 因为元素个数一样; 是因为高维数组的访问慢吗?)

因此, 用一个哈希表即可:
Ll_ Hash_cont_id[ Hash_size_]; (注意, 以前是存的a, 是int; 现在是个LL)
int Hash_cont_val[ Hash_size_];

他的个数是10*2e5 = 2e6

經過實踐檢測: (1, 用線性探測, Hash_size_取到3000037) (2, 用平方探測, Hash_size_取到3000037) ** (3, 不管怎麼, Hash_size_必須是質數!!) **

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:43:26  更:2022-09-13 11:44:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:39:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码