春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
2017-03-03 17:11
976 查看
// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。
//
//
#include "stdafx.h" #include <iostream> #include <vector> #include <numeric> #include<string> #include<limits> #include<stack> using namespace std; struct Giftt { int money; int num; }; class Gift { public: int getValue(vector<int> gifts, int n) { vector<Giftt*> giftVec; int getMoney = -1; for (int i = 0; i < gifts.size(); i++) { bool getflag = false; for (int j = 0; j < giftVec.size(); j++) { if (gifts[i] == (giftVec[j]->money)) { getflag == true; (giftVec[j]->num)++; if ((giftVec[j]->num)>(n / 2 )) { getMoney = j; } break; } } if (getMoney != -1) { break; } if (getflag == false) { Giftt *fg = new Giftt; fg->money = gifts[i]; fg->num=1; giftVec.push_back(fg); } } if (getMoney == -1) return 0; else return giftVec[getMoney]->money; } }; int main() { vector<int> gifts = { 1,2,3,2,2 }; Gift gg; cout << gg.getValue(gifts, 5) << endl; return 0; }
相关文章推荐
- 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
- 有一堆扑克牌,其中某张牌的张数超过了扑克牌总数的一半,请找到这张牌。写出算法思路、代码实现和算法的时间复杂度,要求算法尽可能高效。假设给定一个扑克牌的数组poker和它的大小n,请返回所求的扑克牌。
- 微信红包问题:找出某个出现次数超过红包总数一半的红包的金额(面试题)
- 在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。
- 基于Java代码实现数字在数组中出现次数超过一半
- 微信红包 找到出现次数大于一半的数
- PHP实现找出数组中出现次数超过数组长度一半的数字算法示例
- 微信红包(数组中出现次数超过一半的数字)----腾讯2016研发工程师编程题
- 编程算法 - 数组中出现次数超过一半的数字 代码(C)
- 微信红包签名算法 C#代码实现
- 面试算法(二十八)数组中出现次数超过一半的数字
- 算法题目---数组中出现次数超过一半的数字
- 已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
- 找到数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
- java 找到数组中出现次数超过数组长度一半的那个数字
- 【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
- java实现找出数组中出现次数超过一半的数字
- 剑指Offer面试题29:数组中出现次数超过一半的数字 Java实现