C++ 中陣列移除操作:移除時間大於等於等待時間時的最大移除數
在這個問題中,我們給定了一個包含 N 個元素的陣列。我們的任務是找到當移除時間 >= 等待時間時,陣列中可以移除的最大元素個數。
因此,我們將從陣列中移除元素。陣列元素的值表示移除時間(從陣列中移除元素所需的時間)。
每個元素都有一個等待時間,即它需要等待多長時間才能被移除。
只有當移除時間大於等於等待時間時,才能從陣列中移除元素。
我們需要找到可以從陣列中移除的最大元素個數。可以根據需要更改陣列中元素的順序。
讓我們透過一個例子來理解這個問題:
**輸入** - 陣列 = {12, 3, 11, 7, 5}
**輸出** - 2
**解釋** -
首先,我們將陣列重新排序為升序 -
陣列將變為 {3, 5, 7, 11, 12}
現在,我們將依次移除元素
**移除 3** - 等待時間為 0,小於移除時間 (3)。可以移除。
**移除 5** - 等待時間為 3,小於移除時間 (5)。可以移除。
**移除 7** - 等待時間為 8,大於移除時間 (7)。無法移除。
為了解決這個問題,我們將對陣列進行排序,然後逐個檢查要移除的元素。
演算法
Step 1: Sort the array in ascending order. Step 2: For every element in the array, Do: Step 3: Find waiting Time (sum of removal time of all elements before the element). Step 4: if (waiting time <= removal time ) step 4.1: remove the element and increase the remove count. Step 5: else: break. Step 6: print the number of elements removed.
示例
C++ 程式:查詢移除時間大於等於等待時間時陣列中的最大移除數
#include <bits/stdc++.h>
using namespace std;
int countRemovedElements(int arr[], int n){
sort(arr, arr + n);
int removeCount = 0;
int waitTime = 0;
for (int i = 0; i < n; i++) {
if (arr[i] >= waitTime) {
removeCount++;
waitTime += arr[i];
}
else
break;
}
return removeCount;
}
int main(){
int arr[] = { 12, 3, 11, 7 , 5 };
int n = sizeof(arr) / sizeof(arr[0]);
cout<<"The maximum number of elements that can be removed from the array is "<<countRemovedElements(arr, n);
return 0;
}輸出
The maximum number of elements that can be removed from the array is 2
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP