给定两个大小相等的数组 A
和 B
,A 相对于 B 的优势可以用满足 A[i] > B[i]
的索引 i
的数目来描述。
返回 A
的任意排列,使其相对于 B
的优势最大化。
class Solution { public: vector<int> advantageCount(vector<int>& A, vector<int>& B) { /* 贪心法,对B中的每一个元素,找A中大于它的最小的那个元素,如果没有比B大的,则用A中最小的代替 */ sort(A.begin(),A.end()); vector<int> ans; int flag[10010]; memset(flag,0,sizeof(flag)); int lenA=A.size(); int lenB=B.size(); int i=0,j=0; while(i<lenB){ j=0; while(j<lenA){ if(A[j]>B[i]&&flag[j]==0){ ans.push_back(A[j]); flag[j]=1; break; } j++; } /*如果没找到比B[i]大的就用把A最小的放到这里,这样能保证后面在遇到B[i]可以放入较大的A[j]*/ if(j>=lenA){ for(int i=0;i<=lenA;i++){ if(flag[i]==0){ ans.push_back(A[i]); flag[i]=1; break; } } } i++; } return ans; } };
有话要说...