栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

《算法零基础100讲》 最值算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《算法零基础100讲》 最值算法


题目1:

题目链接

int findMaxConsecutiveOnes(int* nums, int numsSize)
{
    int cnt=0;
    int max=0;
    for(int i=0;imax?cnt:max;
        }
        else
        {
            cnt=0;
        }
    }
    return max;
}

题目2
题目链接

//找最大和次最大的数
int maxProduct(int* nums, int numsSize){
    int max=nums[0];
    int smax=nums[1];
    for(int i=1;i=max)
        {
            smax=max;
            max=nums[i];
        }
        else if(nums[i]=smax)
        {
            smax=nums[i];
        }
    }
    return (max-1)*(smax-1);
}

题目3

题目链接

//二分
int findMin(int* nums, int numsSize){
    int left=0;
    int right=numsSize-1;
    while(leftnums[right])
        {
            left=mid+1;
        }
        else
        {
            right=mid;
        }
    }
    return nums[left];
}
//排序
 int change(void*num1,void*num2)
{
     return *(int*)num1-*(int*)num2;
}
 int findMin(int* nums, int numsSize)
{
     qsort(nums,numsSize,sizeof(int),change);
     return nums[0];
}

题目4

题目链接

//二分
int findMin(int* nums, int numsSize){
    int left=0;
    int right=numsSize-1;
    while(leftnums[right])
        {
            left=mid+1;
        }
        else if(nums[mid] 

题目5

题目链接

int thirdMax(int* nums, int numsSize){
    long long first=LONG_MIN;
    long long second=LONG_MIN;
    long long third=LONG_MIN;
    if(numsSize==1)
        return nums[0];
    else if(numsSize==2)
        return nums[0]>nums[1]?nums[0]:nums[1];
    else if(numsSize>2)
    {
        for(int i=0;ifirst)
            {
                third=second;
                second=first;
                first=nums[i];
            }
            else if(nums[i]second)
            {
                third=second;
                second=nums[i];
            }
            else if(nums[i]third)
            {
                third=nums[i];
            }
        }
    }
    if(third==LONG_MIN)
        return first;
    return third;
}

题目6

题目链接

int maximumProduct(int* nums, int numsSize){
    int first=INT_MIN;
    int third=INT_MIN;
    int second=INT_MIN;
    int sfirst=INT_MAX;//最小的数
    int ssecond=INT_MAX;//次小的数
    for(int i=0;isfirst&&nums[i]<=ssecond)
        {
            ssecond=nums[i];
        }
        if(nums[i]>=first)
        {
            third=second;
            second=first;
            first=nums[i];
        }
        else if(nums[i]=second)
        {
            third=second;
            second=nums[i];
        }
        else if(nums[i]=third)
        {
            third=nums[i];
        }
    }
    //考虑两个负数乘以一个正数是否大于三个正数相乘
    return first*third*second>first*sfirst*ssecond?first*third*second:first*sfirst*ssecond;
}

刷题愉快

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/766682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号