基础算法集训第04天:选择排序和冒泡排序

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);
    }
};

其他题目

知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具

相关推荐
昵称小白1 小时前
复杂度分析方法
算法
科研前沿1 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算
学涯乐码堂主3 小时前
有趣的“打擂台算法”
c++·算法·青少年编程·gesp
切糕师学AI4 小时前
环形缓冲区(Ring Buffer / Circular Buffer)详解:原理、优势、应用与高性能实现
数据结构·环形缓冲区
Tutankaaa4 小时前
知识竞赛题库设计全攻略
人工智能·算法
WolfGang0073214 小时前
代码随想录算法训练营 Day50 | 图论 part08
数据结构·算法·图论
aini_lovee6 小时前
多目标粒子群优化(MOPSO)双适应度函数MATLAB实现
人工智能·算法·matlab
yong99906 小时前
图像融合与拼接:完整MATLAB工具箱
算法·计算机视觉·matlab
春风不语5056 小时前
深入理解主成分分析(PCA)
算法
apollowing6 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶(二十二)
算法·启发式算法·web app