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

【每日刷题】Day77

【每日刷题】Day77

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. LCR 159. 库存管理 III - 力扣(LeetCode)

2. LCR 075. 数组的相对排序 - 力扣(LeetCode)

3. 1346. 检查整数及其两倍数是否存在 - 力扣(LeetCode)

1. LCR 159. 库存管理 III - 力扣(LeetCode)

//思路:TopK问题,堆排序。

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 HeapSort(int* arr,int size,int cnt)

{

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

    {

        AdjustDown(arr,i,size);

    }

    while(cnt)

    {

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

        size--;

        cnt--;

        AdjustDown(arr,0,size);

    }

}

int* inventoryManagement(int* stock, int stockSize, int cnt, int* returnSize)

{

//堆排序将cnt个最小的数排到数组最后

    HeapSort(stock,stockSize,cnt);

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

    int count = 0;

    for(int i = stockSize-cnt;i<=stockSize-1;i++)

    {

        ans[count++] = stock[i];

    }

    *returnSize = count;

    return ans;

}

2. LCR 075. 数组的相对排序 - 力扣(LeetCode)

//思路:哈希记数+遍历。遍历数组1,将数组1中每个元素出现的次数记录。随后遍历数组2,根据数组2的元素出现顺序将数组1中的元素放入新数组。

int* relativeSortArray(int* arr1, int arr1Size, int* arr2, int arr2Size, int* returnSize)

{

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

    int count = 0;

    int hash[1001] = {0};

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

    {

        hash[arr1[i]]+=1;//记录数组1每个元素出现的次数

    }

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

    {

        while(hash[arr2[i]])

        {

            ans[count++] = arr2[i];//遍历数组2,按照数组2的相对顺序放元素

            hash[arr2[i]]--;

        }

    }

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

    {

        while(hash[i])

        {

            ans[count++] = i;//将数组1中未在数组2中出现的元素放入

            hash[i]--;

        }

    }

    *returnSize = count;

    return ans;

}

3. 1346. 检查整数及其两倍数是否存在 - 力扣(LeetCode)

//思路:排序+遍历判断。将数组排为升序,采用冒泡的方式挨个判断每个元素是否满足题意。注意:这里需要处理元素为负的情况。

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 HwapSort(int* arr,int size)

{

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

    {

        AdjustDown(arr,i,size);

    }

    while(size)

    {

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

        size--;

        AdjustDown(arr,0,size);

    }

}


 

bool checkIfExist(int* arr, int arrSize)

{

    HwapSort(arr,arrSize);//排序

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

    {

        for(int j = i+1;j<arrSize;j++)

        {

            if(arr[j]==2*arr[i]||(arr[j]<0&&arr[i]<0&&arr[i]==2*arr[j]))//遍历判断每个元素是否满足题意,需要处理元素为负的情况。

                return true;

        }

    }

    return false;

}

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

相关文章:

  • chrome-base源码分析(1)macros模块
  • 玩转springboot之springboot定制嵌入式的servlet
  • dell服务器RAID5磁盘阵列出现故障的解决过程二——热备盘制作与坏盘替换过程
  • Elasticsearch开启认证|为ES设置账号密码|ES账号密码设置|ES单机开启认证|ES集群开启认证
  • Excel 数据筛选难题解决
  • Web实时通信的学习之旅:WebSocket入门指南及示例演示
  • 分治精炼宝库-----快速排序运用(⌯꒪꒫꒪)੭
  • 快速修复mfc100u.dll丢失解决方案
  • 【C++深度探索】继承机制详解(一)
  • 力扣第218题“天际线问题”
  • 帝国cms未审核文章可视化预览效果
  • 医院管理系统带万字文档医院预约挂号管理系统基于spingboot和vue的前后端分离java项目java课程设计java毕业设计
  • 爬虫技术在物联网数据采集中的应用
  • spring boot初始化的几个总结
  • springcloud第4季 seata报could not find any implementation for class
  • IT之家最新科技热点
  • 对象实例化过程
  • 常见漏洞之XSS
  • Python变量的命名规则与赋值方式
  • 昇思25天学习打卡营第7天|网络构建
  • 扩展阅读:什么是中断
  • git 命令学习之branch 和 tag 操作
  • 如何理解 IEEE 754 单精度浮点型能表示的最小绝对值、最大绝对值
  • LeetCode 算法:二叉树的右视图 c++
  • Java 并发编程常见问题
  • 网络基础:静态路由
  • 库存管理系统基于spingboot vue的前后端分离仓库库存管理系统java项目java课程设计java毕业设计
  • 【ArcGIS AddIn插件】【可用于全国水旱灾害风险普查】全网最强洪水淹没分析插件-基于8邻域种子搜索算法-有源淹没分析算法
  • ==和equals的区别(面试题)
  • 本地项目上传到GitHub上(李豆)