目录
两个数对之间最大的乘积差
class Solution {
public:
int maxProductDifference(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums[nums.size()-1]*nums[nums.size()-2]-nums[0]*nums[1];
}
};
三角形的最大周长
class Solution {
public:
int largestPerimeter(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n=nums.size();
for(int i=n-1;i>=2;i--){
if(nums[i-2]+nums[i-1]>nums[i])return nums[i-2]+nums[i-1]+nums[i];
}
return 0;
}
};
数组拆分
class Solution {
public:
int arrayPairSum(vector<int>& nums) {
int res=0;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size();i+=2){
res+=nums[i];
}
return res;
}
};
救生艇
class Solution {
public:
int numRescueBoats(vector<int>& people, int limit) {
int res=0;
sort(people.begin(),people.end());
int left=0;
int right=people.size()-1;
while(left<=right){
if(people[left]+people[right]<=limit){
res++;
left++;
right--;
}
else {
res++;
right--;
}
}
return res;
}
};
摆动排序||
class Solution {
public:
void wiggleSort(vector<int>& nums) {
sort(nums.begin(),nums.end());
int left=(nums.size()-1)/2;
int right=nums.size()-1;
vector<int> s(nums.size());
for(int i=0;i<nums.size();i++){
if(i%2==0){
s[i]=nums[left--];
}
else {
s[i]=nums[right--];
}
}
for(int i=0;i<nums.size();i++){
nums[i]=s[i];
}
}
};
分发饼干
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int res=0;
int pg=0;
int ps=0;
while(ps<s.size()&&pg<g.size()){
if(s[ps]>=g[pg]){
res++;
pg++;
ps++;
}
else {
ps++;
}
}
return res;
}
};
最少操作使数组递增
class Solution {
public:
int minOperations(vector<int>& nums) {
if(nums.size()==1)return 0;
int res=0;
for(int i=1;i<nums.size();i++){
if(nums[i]<=nums[i-1]){
res+=nums[i-1]-nums[i]+1;
nums[i]=nums[i-1]+1;
}
}
return res;
}
};
使数组唯一的最小增量
class Solution {
public:
int minIncrementForUnique(vector<int>& nums) {
if (nums.size() == 1)
return 0;
sort(nums.begin(), nums.end());
int res = 0;
for (int i = 1; i < nums.size(); i++) {
if (nums[i] <= nums[i - 1]) {
res += abs(nums[i] - nums[i - 1] )+ 1;
nums[i] = nums[i - 1] + 1;
}
}
return res;
}
};
有效三角形的个数
class Solution {
public:
int triangleNumber(vector<int>& nums) {
if(nums.size()<=2)return 0;
int res=0;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size();i++){
for(int j=i+1;j<nums.size();j++){
for(int k=j+1;k<nums.size();k++){
if(nums[i]+nums[j]>nums[k]){
res++;
}
}
}
}
return res;
}
};