• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > MajorityElement[leetcode]

MajorityElement[leetcode]

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了majority element,169 majority element,majority,majority是什么意思,a majority of的用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:Majority Element[leetcode]
描述:

Given an array of size n, find the majority element. The majority element is the element that appears more than ? n/2 ? times.
You may assume that the array is non-empty and the majority element always exist in the array.
求leetcode上以上问题的一个哈希表解法,不知道怎么构造哈希表,还请各位大神指教


解决方案1:

已在leetcode上验证过了.

typedef struct Node {
    int val, count;
} Node;

typedef struct HASH {
    Node *np;
    int size, capacity;
} HASH;

#define N 509

#define HASH_VAL(n) abs((n) % N)

static int ensureCapacity(HASH *hp) 
{
    int size, capacity;
    Node *np;

    size = hp->size;
    capacity = hp->capacity;
    if (size < capacity)
        return 0;
    if (capacity == 0)
        capacity = 8;
    else
        capacity <<= 1;
    np = (Node*)realloc(hp->np, capacity * sizeof(Node));
    if (np == NULL)
        return -1;
    hp->capacity = capacity;
    hp->np = np;
    return 0;
}

static void freeHashTab(HASH htab[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        if (htab[i].np)
            free(htab[i].np);    
}

int majorityElement(int arr[], int n) 
{
    HASH htab[N], *hb;
    int i, j, cur, hval, res;

    memset(htab, 0, N * sizeof(HASH));
    for (i = 0; i < n; i++) {
        cur = arr[i];
        hval = HASH_VAL(cur);
        hb = &htab[hval];
        for (j = 0; j < hb->size; j++)
            if (hb->np[j].val == cur)
                break;
        if (j == hb->size) {
            if (ensureCapacity(hb) == -1)
                goto err;
            hb->np[j].val = cur;
            hb->np[j].count = 1;
            hb->size++; 
        } else {
            hb->np[j].count++;
        }
        if (hb->np[j].count > n / 2) {
            res = hb->np[j].val;
            freeHashTab(htab, N);
            return res;
        } 
    }
    
err:
    freeHashTab(htab, N);
    return -1;    
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MajorityElement[leetcode]

相关文章

  • 2017-06-07 如何用一个python语句将列表s的元素按score的值大小排序?
  • 2017-06-07 JAVA枚举单例模式
  • 2017-06-07 通过hierarchyviewer和monkeyrunner实现自动化测试
  • 2017-06-07 为什么Python26和27对中文进行base64编码,得到的结果不一样?
  • 2017-06-07 今天在编写一个Delphi程序,却怎么也编不出来,希望有高手指点一下!
  • 2017-06-07 通过addurl远程部署程序无法成功的问题
  • 2017-06-07 portal2七牛Portal上的头像如何修改?
  • 2017-06-07 有Pythoner尝试在Android手机或平板设备上做开发吗?
  • 2017-06-07 (golang)go该如何学习主要的应用场景是什么?
  • 2017-06-07 java访问路径问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • curl命令行提交表单表单参数copy自firefox的networkparams
    • gcc-S生成的反汇编,为什么int变量要很多个语句才完成声明?
    • 在SAE中如何托管普通的python程序而不是WSGI?
    • 二叉树数据结构-二叉查找树出现的错误。
    • 本地引用外部服务器的json,responseText转回为json时,老是出错。。。。求救!!!!
    • python爬虫python非WHL文件包如何安装
    • 类似很久以前文字冒险游戏的指令系统
    • 求助:各位高手帮忙看看
    • Javascript正则表达式非获取匹配的问题
    • 怎样增加OSXQuickTime录制屏幕的音量?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有