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

其他题目

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

相关推荐
PPPPPaPeR.1 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
看我干嘛!1 小时前
python第五次作业
算法
历程里程碑1 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun1 小时前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
Pluchon1 小时前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
生锈的键盘2 小时前
推荐算法实践:交叉特征的理解
算法
小龙报2 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
dllxhcjla2 小时前
数据结构和算法
数据结构
乌萨奇也要立志学C++2 小时前
【洛谷】BFS 求解最短路:从马的遍历到迷宫问题的实战解析
算法·宽度优先
老鼠只爱大米2 小时前
LeetCode经典算法面试题 #46:全排列(回溯、交换、剪枝等五种实现方案详细解析)
算法·leetcode·剪枝·回溯·全排列·stj算法