文档章节

Two Sum

seeu
 seeu
发布于 2015/08/21 23:04
字数 292
阅读 5
收藏 0
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
#define explen 16
#define calchash(data) ((data * 2654435769) >> (32 - explen))
//#define calchash(data) (data % 113)
typedef struct node{
    unsigned index;
    int data;
}node;
typedef struct hashtable{
    node *base;
    unsigned int size;
    unsigned int nused;
} hashtable;

int hashinit(hashtable *table, unsigned int size){
    table->base = (node*)malloc(sizeof(node) * size);
    table->size = size;
    table->nused = 0;
    return 0;
}

int hashput(hashtable *table, int arrid, int data){
    
    unsigned int index, hash, hash2, sizemask = table->size - 1;
    hash = calchash(data);
	hash2 = ((hash * 17) & sizemask) | 1;
	index = hash & sizemask;
    for (;;){
	    if (!table->base[index].index){
            table->base[index].index = arrid;
            table->base[index].data = data;
            break;
        }
        index = (index + hash2) & sizemask;
    }
    return 0;
}
int hashtouch(hashtable *table, int data){ 
    unsigned int index, hash, hash2, sizemask = table->size - 1;
    hash = calchash(data);
	hash2 = ((hash * 17) & sizemask) | 1;
	index = hash & sizemask;
    for (;;){
	    if(!table->base[index].index){
            return 0;
        }else if (table->base[index].data == data){
            return table->base[index].index;
        }
        index = (index + hash2) & sizemask;
    }
}

int* twoSum(int* nums, int numsSize, int target) {
    int i, j, k;
    int *selection = malloc(sizeof(int) * 2);
    hashtable *table;
	hashtable table_base;
	table = &table_base;
    hashinit(table, 1024 * 16);
    memset(table->base, 0, table->size * sizeof(node));
    for(i = 0; i < numsSize; ++i){
        selection[0] = hashtouch(table, target - nums[i]);
        if(selection[0]){
            selection[1] = i + 1;
            break;
        }
        hashput(table, i + 1, nums[i]);
    }
    free(table->base);
    return selection;
}



© 著作权归作者所有

seeu
粉丝 2
博文 22
码字总数 7965
作品 0
广州
程序员
私信 提问
Sql查询的时候queryPage failed : ORA-00923: 未找到要求的 FROM 关键字

SELECT * FROM (SELECT * FROM (SELECT recseqno,ROUND(SUM(KPI270/1000)) FTPDLPDCPCDF5ThrputAll,ROUND(DECODE(SUM(KPI308),0,NULL,SUM(KPI89)*8/KPI308),2) FTPULThrputsuccess,ROUND(SUM......

记忆如牢_囚我终老
2016/10/14
512
2
mongdb 与 sql 数据库对照关系图

SQL Terms, Functions, and Concepts MongoDB Aggregation Operators WHERE $match GROUP BY $group HAVING $match SELECT $project ORDER BY $sort LIMIT $limit SUM() $sum COUNT() $sum j......

今天来找bug
2016/02/29
48
0
Interlocked.Increment 方法 和Interlocked.Decrement 方法作用

Interlocked.Increment 方法:让++成为原子操作;Interlocked.Decrement 方法让--成为原子操作。 什么叫原子操作呢。就是不会被别人打断,因为C#中的一个语句,编译成机器代码后会变成多个语...

cxycappuccino
2011/01/06
0
0
The class 'com.jfinal.plugin.activerecord.Record' does not have the property 'time'.

List sum = Db.find("select DATE_FORMAT(tm,'%H') as time , "+ "sum( par1) as a,"+ "sum( par2) as b,"+ "sum( par3) as c,"+ "sum( par4) as d,"+ "sum( par5) as e,"+ "sum( par6) as f......

NewZero
2016/05/31
328
1
UNIX环境下批量生产用户(原创:北京)

UNIX环境下批量生产用户 作者:viking_lee freenews88@yahoo.com.cn 原创作品 本例可用于Linux8.0/7.0 Solaris8 Linux 环境: 1.编写一个文件:passwd.list。目的是让计算机可识别出用户名。...

JavaGG
2009/05/06
254
0

没有更多内容

加载失败,请刷新页面

加载更多

教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

xiangyunyan
35分钟前
6
0
返回提示信息,如:xxx创建成功!

【服务端】在输出的方法块中,加入要输出的字段(qcm_batch_id) QCMUserType.cs: public struct QCM_Custom_Create_Batch_Out_Tag { public BASCoreType.Cmn_Out_T......

_Somuns
35分钟前
6
0
Aliyun Serverless VSCode Extension v1.12.0 发布

Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试...

阿里云官方博客
35分钟前
6
0
程序员如何培养解决复杂问题的能力?

今天在上网时候,突然看到了这篇文章,感觉非常的适合现在的自己去思考下,可能也适用在座的读者。程序员不仅仅是敲代码,更是一个复合能力的结合体,也不仅仅停留在技术和代码阶段。你想要成...

哥本哈根的小哥
39分钟前
8
0
市场变化驱动产品思维升级

宜信科技中心财富管理产品部负责人Bob,与大家一起聊聊个性化推荐产品功能的设计和B端产品的功能策划方式。 拓展阅读:回归架构本质,重新理解微服务 智慧金融时代,大数据和AI如何为业务赋能...

宜信技术学院
39分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部