top200数组中出现次数超过一半的数字

不是,说我这个超过0.00%是不是太欺负人了!!哼,反正我通过了,我就是擅长穷举。

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        int a=numbers.size();
        int b=0;
        int c=0;
        for(int i=0;i<a;i++){
            b=numbers[i];
            c=0;
            for(int j=0;j<a;j++){
                if(numbers[j]==b)
                    c++;
                if(c>a/2)
                    return numbers[i];
            }
        }
    }
};
如果数组中存在多个元素出现次数相同,通常可以使用哈希表(在Java中是HashMap或HashSet,Python中是字典)来统计每个元素出现次数。之后,可以再次遍历哈希表,找出出现次数最多的所有元素。以下是一个简单的算法描述: 1. 创建一个哈希表,用来存储每个元素及其出现次数。 2. 遍历数组,对于每个元素,更新哈希表中对应元素的计数。 3. 再次遍历哈希表,找出最大出现次数,这个值记为`maxCount`。 4. 创建一个新的列表,用于存储出现次数等于`maxCount`的所有元素。 5. 遍历哈希表,将出现次数等于`maxCount`的元素添加到新的列表中。 6. 返回这个新列表,其中包含了所有出现次数最多的元素。 以下是使用Java的示例代码: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class TopKFrequentElements { public List<Integer> findTopKFrequentElements(int[] nums, int k) { Map<Integer, Integer> frequencyMap = new HashMap<>(); // Step 1 & 2: Count the frequency of each element for (int num : nums) { frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1); } List<Integer> result = new ArrayList<>(); int maxFrequency = 0; // Step 3: Find the max frequency for (int num : frequencyMap.keySet()) { maxFrequency = Math.max(maxFrequency, frequencyMap.get(num)); } // Step 4 & 5: Collect all elements with max frequency for (int num : frequencyMap.keySet()) { if (frequencyMap.get(num) == maxFrequency) { result.add(num); } } // Step 6: Return the result list return result; } public static void main(String[] args) { TopKFrequentElements solution = new TopKFrequentElements(); int[] nums = {1, 1, 1, 2, 2, 3}; int k = 2; List<Integer> topK = solution.findTopKFrequentElements(nums, k); System.out.println(topK); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值