分治法(C语言)leetcode 169,53,215

本文通过分治法分别解决LeetCode的三个问题:169题多数元素,寻找数组中出现次数大于n/2的元素;53题最大子数组和,求解整数数组的最大连续子数组和;215题数组中第k个最大元素,找出未排序数组中排序后的第k大元素。每个问题的时间复杂度都进行了分析。
摘要由CSDN通过智能技术生成

169多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

来源:力扣(LeetCode)

int majorityElement(int* nums, int numsSize){
   

    getmaj(nums, 0, numsSize-1);

}

int getmaj(int *nums, int low,int high)
{
   
    int left,right;//记录两个边的众数
    int i;
    int countleft = 0, countright = 0;

    if(low = high)//数组中只有一个数
    {
   
        return nums[low];
    }
    else
    {
   
        mid = (low + high)/2;
        left = getmaj(nums, low, mid);
        right = getmaj(nums, mid+1, high)if(left = right)//两边众数相等
        {
   
            return left;
        }
        else{
   
            for(i = 0; i <= high;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值