1913. 两个数对之间的最大乘积差
class Solution {
public:
int maxProductDifference(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums[nums.size()-1]*nums[nums.size()-2]-nums[1]*nums[0];
}
};
976. 三角形的最大周长
class Solution {
public:
static bool cmp(int a,int b) {
return a>b;
}
int largestPerimeter(vector<int>& nums) {
int n=nums.size();
sort(nums.begin(),nums.end(),cmp);
for(int i=0;i<n-2;i++) {
if(nums[i+1]+nums[i+2]>nums[i]) return nums[i]+nums[i+1]+nums[i+2];
}
return 0;
}
};
561. 数组拆分 I
class Solution {
public:
int arrayPairSum(vector<int>& nums) {
int sum=0,n=nums.size();
sort(nums.begin(),nums.end());
for(int i=0;i<n;i+=2) {
sum+=nums[i];
}
return sum;
}
};
881. 救生艇
class Solution {
public:
int numRescueBoats(vector<int>& people, int limit) {
int ans=0,n=people.size();
sort(people.begin(),people.end());
for(int i=n-1;i>=0;i--) {
if(people[i]!=-1) {
int l=0,r=i-1;
while(l<r) {
int mid=l+r+1>>1;
if(people[mid]<=limit-people[i]) l=mid;
else r=mid-1;
}
while(l>=0&&people[l]==-1) l--;
cout<<i<<' '<<l<<endl;
if(l>=0&&people[l]!=-1&&people[l]+people[i]<=limit) people[l]=-1;
ans++;
}
}
return ans;
}
};
324. 摆动排序 II
class Solution {
public:
void wiggleSort(vector<int>& nums) {
vector<int>res=nums;
sort(res.begin(),res.end());
int n=nums.size(),j=n-1;
for(int i=1;i<n;i+=2) {
nums[i]=res[j--];
}
for(int i=0;i<n;i+=2) {
nums[i]=res[j--];
}
}
};
455. 分发饼干
const int N=3e4+10;
bool st[N];
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
memset(st,false,sizeof(st));
sort(s.begin(),s.end());
int ans=0,n=g.size();
for(int i=0;i<n;i++) {
int l=0,r=s.size()-1;
while(l<r) {
int mid=l+r>>1;
if(s[mid]>=g[i]) r=mid;
else l=mid+1;
}
while(l<s.size()&&st[l]) l++;
if(l<s.size()&&!st[l]&&s[l]>=g[i]) st[l]=true,ans++;
}
return ans;
}
};
1827. 最少操作使数组递增
class Solution {
public:
int minOperations(vector<int>& nums) {
int ans=0;
for(int i=1;i<nums.size();i++) {
if(nums[i]<=nums[i-1]) ans+=(nums[i-1]-nums[i])+1,nums[i]=nums[i-1]+1;
}
return ans;
}
};