问题描述:能否快速找到一个数组中的两个数字,让这两个数字之和等于一个给定的数字,为了简化起见,我们假设这个数组中肯定存在这样一组或以上符合条件的解。这里我们只考虑一种解的情况。解法:1.
暴力解法------O(n^2)2. 排序+二分查找------O(nlogn)3. hash表查找------...
分类:
其他好文 时间:
2014-05-19 08:51:09
阅读次数:
313
未排序数组,O(N)时间,常数空间,这道题让我非常清晰的感觉到算法的魅力。
先想一下如果允许用额外空间的话,我们会怎么做,对,我们会建立一个hash表,然后从头到尾的扫描数组,等等,怎么映射呢?有n个数,要找第一个消失的正正整数,那么这个消失的正整数的取值范围是什么呢?[1, n+1],之所以包含n+1是因为如果这n数正好是连续的前n个自然数。那我们就知道了,开一个长为n的哈希表,如果当前扫到得...
分类:
其他好文 时间:
2014-05-15 03:45:41
阅读次数:
276
用暴力水过了两个,正在沾沾自喜,当看到连续加的规模增加到4时,眼泪直接掉下来了,新想这下我这水货原形毕露了,没想到。。
我抱着试试看的心态,又写了一种水水的暴力解,每次固定前面的两个节点,后面的两个按照twosum那套来搞,搞完了移动之前固定的右边的那个点,最后再移动固定的左边的那个点,居然也过了。。
刚想起来其实twosum有一种很优雅的解法,建一个hash表,从头扫描数组,遇到一个数,查找...
分类:
其他好文 时间:
2014-05-15 01:09:26
阅读次数:
235
今天再看这个题时,死活想不起这个单词是什么意思,查了字典都不知道,真晕了。
这个单词直译是颠倒顺序所形成的单词,实际上就是从集合中找出所有是由一组字母形成的那些单词,这种可以由很多组,即只要这组字母形成的字典中的单词多于1个,就要把这些单词输出出来。
怎么做呢?思路还是很简单的,要找出是由一组字母形成的单词,显然应该知道每一个单词是由哪些字母形成的,这当然可以建一个hash表,每次都比对has...
分类:
其他好文 时间:
2014-05-14 15:12:04
阅读次数:
296
基本概念Nested loop join:Outer table中的每一行与inner
table中的相应记录join,类似一个嵌套的循环。Sort merge join:将两个表排序,然后再进行join。Hash
join:将两个表中较小的一个在内存中构造一个Hash 表(对Join Key),扫...
分类:
数据库 时间:
2014-05-12 14:42:33
阅读次数:
404
挺考智力的题目。
思路:
1 如果是假币,那么每次都必定引起天平的不平衡
2 如果天平平横,那么全部都肯定是真币
利用这个特性,利用hash表,就能写出很简洁的程序。
如果使用枚举,那么会(轻松?)过百行的代码的。
当然其实题目给出了条件:一定可以找出唯一的假币的。
如果没有这个条件,那么是不一定可以三次称,就能确定结果的。
下面程序参考了别人的:
htt...
分类:
其他好文 时间:
2014-05-10 04:21:02
阅读次数:
386
MySQL源码自定义了hash表,因为hash表具有O(1)的查询效率,所以,源码中大量使用了hash结构。下面就来看下hash表的定义:【源代码文件include/hash.h
mysys/hash.c】typedef uint my_hash_value_type;typedef uchar *...
分类:
数据库 时间:
2014-05-09 10:50:26
阅读次数:
485
给你一个数组,O(N)时间找出某些个数,这些题如果没见过,还真不是很好想。做了这些题,我觉得有下面两个个比较常见的思路:
1. 用两个指针,可以从一边开始,走某个距离停止,也可能是一头一尾两个指针,定义一种大小关系,他俩比较之后移动,直到相遇。
2. 用其他的辅助的数据结构,可能是hash表,可能是map,可能是栈或者队列。这种通常用在访问了现在的不能确定他们是不是有用,是不是能影响最后的结果...
分类:
其他好文 时间:
2014-05-07 07:50:33
阅读次数:
392
Memcache概述官方Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。+个人理解1.它是基于C语言的Libevent库进行开发的2.Memcac...
分类:
其他好文 时间:
2014-05-06 01:05:02
阅读次数:
364
本题有意思,是hash表的灵活运用。
思路:
1 计算好总字符数,和使用hash表A[26]记录好各个字符出现的次数
2 判断总字符是否可以被k整除,如果不可以,那么就不能分成k个子字符了
3 计算各个字符出现的次数是否能被k整除,如果不能,那么就不能分成k个子字符
4 根据字符出现的次数逐个打印...
分类:
其他好文 时间:
2014-05-03 15:43:20
阅读次数:
394