优化整站,seo知名公司,苏州建设公司网站建设,深圳网站公司【每日刷题】Day77 #x1f955;个人主页#xff1a;开敲#x1f349; #x1f525;所属专栏#xff1a;每日刷题#x1f34d; #x1f33c;文章目录#x1f33c;
1. LCR 159. 库存管理 III - 力扣#xff08;LeetCode#xff09;
2. LCR 075. 数组的相对排序 - 力…【每日刷题】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*21; while(childsize) { if(child1sizearr[child1]arr[child]) child; if(arr[child]arr[parents]) Swap(arr[child],arr[parents]); else break; parents child; child parents*21; } } //堆排序 void HeapSort(int* arr,int size,int cnt) { for(int i (size-2)/2;i0;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;istockSize-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;iarr1Size;i) { hash[arr1[i]]1;//记录数组1每个元素出现的次数 } for(int i 0;iarr2Size;i) { while(hash[arr2[i]]) { ans[count] arr2[i];//遍历数组2按照数组2的相对顺序放元素 hash[arr2[i]]--; } } for(int i 0;i1001;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*21; while(childsize) { if(child1sizearr[child1]arr[child]) child; if(arr[child]arr[parents]) Swap(arr[child],arr[parents]); else break; parents child; child parents*21; } } //堆排序 void HwapSort(int* arr,int size) { for(int i (size-2)/2;i0;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;iarrSize-1;i) { for(int j i1;jarrSize;j) { if(arr[j]2*arr[i]||(arr[j]0arr[i]0arr[i]2*arr[j]))//遍历判断每个元素是否满足题意需要处理元素为负的情况。 return true; } } return false; }