倩倩之美~

导航

九日集训第六天

两个数对之间最大的乘积差
class Solution {
public:
int maxProductDifference(vector& 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& 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& 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& 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& nums) {
sort(nums.begin(),nums.end());
int left=(nums.size()-1)/2;
int right=nums.size()-1;
vector 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& g, vector& 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& 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& 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& 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;
}
};

posted on 2025-06-19 18:02  爱开发的倩倩  阅读(3)  评论(0)    收藏  举报