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

其他题目

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

相关推荐
Wect2 小时前
LeetCode 130. 被围绕的区域:两种解法详解(BFS/DFS)
前端·算法·typescript
NAGNIP13 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
颜酱1 天前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub1 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
NAGNIP2 天前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP2 天前
一文搞懂激活函数!
算法·面试