求一個數組中重複元素出現最多值,最大的元素及出現次數,次數相同時,取最大值,優先考慮次數
#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 題目很簡單,時