基础算法集训第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);
    }
};

其他题目

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

相关推荐
充值修改昵称2 小时前
数据结构基础:二叉树高效数据结构的奥秘
数据结构·python·算法
啊阿狸不会拉杆2 小时前
《机器学习》第四章-无监督学习
人工智能·学习·算法·机器学习·计算机视觉
Java程序员威哥2 小时前
用Java玩转机器学习:协同过滤算法实战(比Python快3倍的工程实现)
java·开发语言·后端·python·算法·spring·机器学习
Lips6113 小时前
第六章 支持向量机
算法·机器学习·支持向量机
Howrun7773 小时前
信号量(Semaphore)
开发语言·c++·算法
cheems95273 小时前
[Java EE]多线程模式下容器的选择
算法·哈希算法
飞Link3 小时前
指令调整阶段中的通用模型蒸馏、模型自我提升和数据扩充
python·算法·数据挖掘
wen__xvn3 小时前
基础算法集训第01天:线性枚举
数据结构·c++·算法
nju_spy3 小时前
力扣每日一题 2026.1
算法·leetcode·二分查找·动态规划·最小生成树·单调栈·最长公共子序列