75. 颜色分类 - 力扣(LeetCode)
cpp
class Solution {
public:
void sortColors(vector<int>& nums) {
int p0=0;
int p1=0;
for(int i=0;i<nums.size();i++){
if(nums[i]==1){
swap(nums[i],nums[p1++]);
}
else if(nums[i]==0){
swap(nums[i],nums[p0]);
if(p0<p1){
swap(nums[i],nums[p1]);
}
p1++;
p0++;
}
}
}
};
4. 寻找两个正序数组的中位数 - 力扣(LeetCode)
cpp
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> s;
int p1=0;
int p2=0;
while(p1<nums1.size()&&p2<nums2.size()){
if(nums1[p1]<nums2[p2])s.push_back(nums1[p1++]);
else s.push_back(nums2[p2++]);
}
while(p1<nums1.size())s.push_back(nums1[p1++]);
while(p2<nums2.size())s.push_back(nums2[p2++]);
int t=s.size();
double n;
if(t%2==1)n=s[t/2];
else n=((double)s[t/2]+(double)s[t/2-1])/2.0;
return n;
}
};
747. 至少是其他数字两倍的最大数 - 力扣(LeetCode)
cpp
class Solution {
public:
int dominantIndex(vector<int>& nums) {
int fm=nums[0];
int p=0;
int sm;
for(int i=1;i<nums.size();i++){
if(nums[i]>fm){
sm=fm;
fm=nums[i];
p=i;
}
if(nums[i]>sm&&nums[i]<fm){
sm=nums[i];
}
}
if(sm*2<=fm){
return p;
}
else return -1;
}
};
1502. 判断能否形成等差数列 - 力扣(LeetCode)
cpp
class Solution {
public:
bool canMakeArithmeticProgression(vector<int>& arr) {
sort(arr.begin(),arr.end());
for(int i=2;i<arr.size();i++){
if(arr[i]-arr[i-1]!=arr[i-1]-arr[i-2]){
return false;
}
}
return true;
}
};
1046. 最后一块石头的重量 - 力扣(LeetCode)
cpp
class Solution {
public:
int lastStoneWeight(vector<int>& stones) {
priority_queue<int> p;
for(int i=0;i<stones.size();i++){
p.push(stones[i]);
}
while(p.size()>1){
int a=p.top();
p.pop();
int b=p.top();
p.pop();
if(a!=b){
p.push(a-b);
}
}
if(p.size()==0){
return 0;
}
else {
return p.top();
}
}
};
2148. 元素计数 - 力扣(LeetCode)
cpp
class Solution {
public:
int countElements(vector<int>& nums) {
if(nums.size()==1)return 0;
int MAX=nums[0];
int MIN=nums[0];
int nMAX=1;
int nMIN=1;
for(int i=1;i<nums.size();i++){
if(nums[i]>MAX){
MAX=nums[i];
nMAX=1;
}
else if(nums[i]==MAX){
nMAX++;
}
if(nums[i]<MIN){
MIN=nums[i];
nMIN=1;
}
else if(nums[i]==MIN){
nMIN++;
}
}
if(nMAX==nums.size())return 0;
return nums.size()-nMAX-nMIN;
}
};
88. 合并两个有序数组 - 力扣(LeetCode)
cpp
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int p1=m;
int p2=0;
while(p1<nums1.size()&&p2<n){
nums1[p1++]=nums2[p2++];
}
sort(nums1.begin(),nums1.end());
}
};
1464. 数组中两元素的最大乘积 - 力扣(LeetCode)
cpp
class Solution {
public:
int maxProduct(vector<int>& nums) {
sort(nums.begin(),nums.end());
return (nums[nums.size()-1]-1)*(nums[nums.size()-2]-1);
}
};
其他题目
知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具
