1. 程式人生 > >求一個數組中重複元素出現最多值,最大的元素及出現次數,次數相同時,取最大值,優先考慮次數

求一個數組中重複元素出現最多值,最大的元素及出現次數,次數相同時,取最大值,優先考慮次數

#include <iostream>
#include <string>
#include <map>

using namespace std;

void maxNumTimes(int a[], int len, int b[])
{
	map<int, int> mapData;
	int count = 0;
	for(int i = 0; i < len; i++)
	{
		mapData[a[i]]++;
	}

	//int max times
	int maxTimes = 0;
	map<int, int>::const_iterator it = mapData.begin();
	while(it!= mapData.end())
	{
		if(maxTimes < it->second)
			maxTimes = it->second;
		it++;
	}

	//int max num
	int maxNum = 0;
	map<int, int>::reverse_iterator re_it = mapData.rbegin();
	while(re_it != mapData.rend())
	{
		if (maxTimes == re_it->second)
		{
			if (maxNum < re_it->first)
			{
				b[0] = re_it->first;
			}
			b[1] = re_it->second;
		}
		re_it++;
	}	
}

相關推薦

個數重複元素出現元素出現次數次數同時優先考慮次數

#include <iostream> #include <string> #include <map> using namespace std; void maxNumTimes(int a[], int len, int b[])

個數出現次數超過n/3的數(c++實現)

題目要求如下: 令A是一個長度為n的正整數序列。試設計一個時間 和空間複雜度分別為O(n)和O(1) 的演算法,判斷A中 是否存在這樣的元素x,x在序列中出現次數超過n/3。 若存在這樣的x,則將其輸出。 實現思路: 、BM(Boyer-Moore Majority V

個數是否存在兩元素滿足相加為另個數

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9

C語言找出個數重複元素

在一個數組中的數字是連續的,但是這個陣列中有一個數重複出現了一次,找出這個數。 #include <stdio.h> int main() { int i; int tmp=10; int swap=0; int a[10]={1,3,5,

190104作業-刪除個數重複元素

刪除一個數組中重複的元素。例如 1 ,2, 2,2,3,3,3,4,4,5,5,5,6,6,6 -> 1,2,3,4,5,6   #include <stdio.h> #include <stdlib.h> #define MAX 100 //首先考慮

個數出現次的數

pub enum one 求一個 所有 bsp int [] spa 1 public class NumAppearOnce { 2 /* 3 思想, 4 1、單個數的1位肯定是奇數個,0位就是0 5 2、因此1位相異或就是1,

O(n)個數連續區間和的

return 區間 scan CI spa 最大 %d 區間和 數組 int n, a[5000]; int main(){ scanf("%d", &n); for (int i = 1; i <= n; i++)cin >>

個數

div return urn 技術 code include 一個 最小值 array #include <stdio.h> int main() { int array[10]={100,1,40,29,45,22,98,2,83,75};

java二分法來個數一個的key

package TestArray;import java.util.Arrays;/** * 二分法查詢 */public class Test { public static void main(String[] args) { int[] arr = {30, 20, 50, 10,

java實現遞迴函式入門級例子:用遞迴函式個數

我們開始把陣列分為兩半,分別找出最大值,那麼這個最大值就是最後的最大值:同時我們左右兩邊繼續細分,停止條件就是細分到單個數值為止。 package chapter1; //使用遞迴求出一個數組中的最小值 public class FindMax { public sta

演算法12--topK個數第k的數

求一個數組中第k大的值 解法一: 建立一個k個元素的最大堆,首先將陣列中前k個元素放入堆中,此時堆頂元素為第k大的元素,後面繼續遍歷陣列,比較堆頂元素與陣列中元素值,當陣列中元素小於堆頂元素時,將堆頂元素彈出,新元素入堆,這樣最終堆頂元素即為第k大。 可以直接利用Jav

個數小的K個數字

用快排思想:import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; class Solution

acm-1003 個數連續區間和的問題

時間複雜度為n的方法: import java.util.Scanner; class Main { public static void main(String[] args) { Scanner sc = new Scanne

個數第k的數要求不能另外申請空間陣列順序不能被改變

這是一道今日頭條的面試題,當面試官提出這樣一道題目時。我想相信,大多數人都會這樣反應 1.是不是可以先排一下序,然後再求第k大的,然後就想到陣列順序不能被改變,然後否定了 2.是不是可以用小堆來做。我建立一個堆大小為k的小堆,然後把這些資料全部扔進小堆中,除了堆頂,其他的數

【C語言】簡單思路找個數重複次數的數

#include <stdio.h> int main() {     int a[1024];     int b[1024] = {0};                           //初始化每個數出現一次          int i = 0;

個數右邊第一個比他的數(單調棧)

題意思路如標題 int main() { int n; cin >> n; int a[MAXN]; for (int i = 0; i < n; ++i) { cin >> a[i];

個數函式的下標值

#include <stdio.h> int maxElement(array[] ,int n) {  int i=0,n=0,t=array[0];//將下標為0的值賦值給t  for(i=0;i<n;i++)//控制迴圈  {  if(t<ar

【Python】個數的奇數的立方的和

問題 給出一個數字的陣列,找出其中的奇數,將他們各自的立方和相加,返回結果 思路 陣列 迴圈 判斷 求和 解決方法 sum求和,內部迭代判斷奇偶 def cube_odd(arr):

c實現 個數大子序列的和 (兩種方法)

||_ 題目描述 ||_ 分析 本題的核心是計算出一個序列的所有子序列中元素和為最大時的值,不要求輸出對應的子序列是什麼,而只要求輸出和的最大值是多少。 法一: 我們把序列分成兩半(左邊

【小紅書2017年筆試】個數平均數的子陣列

 題目:   * 給一個數組,裡邊有N個整數,找長度為K(0<K<N)且平均值最大的子陣列,並把這個最大值輸出來 輸入描述:* 6 (N的值)* 1 12 -5 -6 50 3 (含有N個整數的陣列)* 4 (K的值) 輸出描述: * 12.75 題目很簡單,時