当前位置: 首页 > news >正文

【每日刷题】Day75

【每日刷题】Day75

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 1833. 雪糕的最大数量 - 力扣(LeetCode)

2. 面试题 17.14. 最小K个数 - 力扣(LeetCode)

3. 面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

1. 1833. 雪糕的最大数量 - 力扣(LeetCode)

//思路:记数排序。

//记数排序

void CountSort(int* arr,int size)

{

    int* hash = (int*)calloc(100001,sizeof(int));

    int max = 0;

    int count = 0;

    for(int i = 0;i<size;i++)

    {

        hash[arr[i]]+=1;

        if(arr[i]>max)

            max = arr[i];

    }

    for(int i = 1;i<=max;i++)

    {

        while(hash[i])

        {

            arr[count++] = i;

            hash[i]--;

        }

    }

}

int maxIceCream(int* costs, int costsSize, int coins)

{

    int ans = 0;

    CountSort(costs,costsSize);

    for(int i = 0;i<costsSize;i++)

    {

        if(coins-costs[i]>=0)

        {

            coins-=costs[i];

            ans++;

        }

        else

            break;

    }

    return ans;

}

2. 面试题 17.14. 最小K个数 - 力扣(LeetCode)

//思路:TopK问题。采用堆排序将所求的K个数排入堆底。

//交换

void Swap(int* x, int* y)

{

    int tmp = *x;

    *x = *y;

    *y = tmp;

}

//向下调整

void AdjustDown(int* arr, int parents, int size)

{

    int child = parents * 2 + 1;

    while (child < size)

    {

        if (child + 1 < size && arr[child + 1] < arr[child])

            child++;

        if (arr[child] < arr[parents])

            Swap(&arr[child], &arr[parents]);

        else

            break;

        parents = child;

        child = parents * 2 + 1;

    }

}

void TopK(int* arr, int size, int k)

{

    for (int i = (size - 2) / 2; i >= 0; i--)

    {

        AdjustDown(arr, i, size);

    }

    while (k)//循环K次,每次将最小的数排入堆底

    {

        Swap(&arr[0], &arr[size - 1]);

        k--;

        size--;

        AdjustDown(arr, 0, size);

    }

}

int* smallestK(int* arr, int arrSize, int k, int* returnSize)

{

    TopK(arr,arrSize,k);

    int* ans = (int*)malloc(sizeof(int)*100000);

    int count = 0;

    for(int i = arrSize-1;i>=arrSize-k;i--)

    {

        ans[count++] = arr[i];//拿取堆底的K个数

    }

    *returnSize = count;

    return ans;

}

3. 面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

//思路①:哈希

bool isUnique(char* astr)

{

    int hash[27] = {0};

    for(int i = 0;i<strlen(astr);i++)

    {

        hash[astr[i]-'a']+=1;

    }

    for(int i = 0;i<27;i++)

    {

        if(hash[i]>1)

            return false;

    }

    return true;

}

//思路②:排序+一次遍历。选用插入排序,不需要开辟额外的空间,效率也不错。

//插入排序

void Insert(char* arr)

{

    for(int i = 0;i<strlen(arr)-1;i++)

    {

        int end = i+1;

        char tmp = arr[end];

        while(end-1>=0)

        {

            if(arr[end-1]>tmp)

                arr[end] = arr[end-1];

            else

                break;

            end--;

        }

        arr[end] = tmp;

    }

}


 

bool isUnique(char* astr)

{

    if(!strlen(astr))

        return true;

    Insert(astr);

    for(int i = 0;i<strlen(astr)-1;i++)

    {

        if(astr[i]==astr[i+1])

            return false;

    }

    return true;

}

http://www.lryc.cn/news/383931.html

相关文章:

  • 文件管理器加载缓慢-禁用文件类型自动发现功能
  • .[nicetomeetyou@onionmail.org].faust深入剖析勒索病毒及防范策略
  • Ardupilot开源代码之ExpressLRS性能实测方法
  • Transformers是SSMs:通过结构化状态空间对偶性的广义模型和高效算法(二)
  • Segment any Text:优质文本分割是高质量RAG的必由之路
  • IDEA 学习之 编译内存问题
  • 如何将本地项目推送到gitee仓库
  • 产品经理基础入门
  • 五子棋纯python手写,需要的拿去
  • C# Winform按钮避免重复点击以及解决WinForm中设置Enabled=False为什么还会响应Click事件
  • 谷歌SEO是什么意思?
  • IPFoxy Tips:匿名海外代理IP的使用方法及注意事项
  • 【MySQL进阶之路 | 小结篇】MySQL键约束KEY与索引INDEX
  • 【中学教资科目二】02中学课程
  • Stable Diffusion 亲测这几个SDXL大模型,真的非常好用!
  • DLS策略洞察:如何应对AI数据中心网络交换机市场的爆发式增长?
  • 数据仓库架构设计
  • EasyExcel动态表头多sheet录入,单元格操作样式,自动修改单元格格式
  • Linux的设备模型
  • 初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发
  • 社区团购小程序开发
  • 数据分析python基础实战分析
  • 英语笔记-专升本
  • 什么野指针(c++)
  • 【编译原理】绪论
  • 优化Docker部署:解决Java应用ExcelGenerateException并提速镜像构建
  • 你了解RabbitMQ、RocketMQ和Kafka吗?
  • python实现可视化大屏(django+pyechars)
  • Leetcode 力扣 125. 验证回文串 (抖音号:708231408)
  • Java程序递归及mybatis递归查询