【每日刷题】Day77

【每日刷题】Day77

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

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

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

[3. 1346. 检查整数及其两倍数是否存在 - 力扣(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&&arrchild+1<arrchild)

child++;

if(arrchild<arrparents)

Swap(&arrchild,&arrparents);

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(&arr0,&arrsize-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++)

{

anscount++ = stocki;

}

*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 hash1001 = {0};

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

{

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

}

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

{

while(hasharr2\[i])

{

anscount++ = arr2i;//遍历数组2,按照数组2的相对顺序放元素

hasharr2\[i]--;

}

}

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

{

while(hashi)

{

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

hashi--;

}

}

*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&&arrchild+1>arrchild)

child++;

if(arrchild>arrparents)

Swap(&arrchild,&arrparents);

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(&arr0,&arrsize-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(arrj==2*arri||(arrj<0&&arri<0&&arri==2*arrj))//遍历判断每个元素是否满足题意,需要处理元素为负的情况。

return true;

}

}

return false;

}

相关推荐
happyprince1 小时前
03-深刻观-CodeX哲学与升华(源码)
算法·ai编程
不会打球的王子1 小时前
Day 27:迁移学习与微调 — 站在巨人的肩膀上
算法
老当益壮梁奶奶1 小时前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习
sunoo-2291 小时前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
数模竞赛Paid answer2 小时前
2025年中青杯数学建模A题康养城市建设求解全过程论文及程序
算法·数学建模·数据分析·中青杯
网安蟹佬霸2 小时前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
yangmu32032 小时前
深度解析:短视频是如何通过“算法+神经机制”劫持用户时间的?
算法
LuminousCPP2 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode
纪念 2292 小时前
二叉树排序讲解(一)
数据结构
tudousisi2222 小时前
01背包8.21
数据结构·算法