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

其他题目

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

相关推荐
Nil2086 分钟前
leetcode 189轮转数组
数据结构·算法·leetcode
-dzk-19 分钟前
【动态规划】LC 118.杨辉三角
算法·动态规划
恣逍信点23 分钟前
《凌微经》静态自悖——变化之自因
人工智能·科技·算法·机器学习·业界资讯·拓扑学·哲学
吃着火锅x唱着歌41 分钟前
LeetCode 3885.设计事件管理器
算法·leetcode·职场和发展
土司大王1 小时前
LeetCode hto100——字母异位词分组
java·算法·leetcode
Eloudy1 小时前
预词力:LLM 的唯一形式化能力
人工智能·算法·agent
依然鸣1 小时前
PTA团体程序设计天梯赛L1真题讲解L1-085-088
数据结构·c++·经验分享·算法·深度优先·pat考试
听取WA声一片(无恶意)2 小时前
CSP-J/S 初赛图论完全讲义
算法·csp-s初赛·csp-j初赛
Brilliantwxx2 小时前
【算法从零到千】【51-54】逆序对(分治+递归算法)
数据结构·算法·排序算法
小星星闪亮登场2 小时前
2026河南萌新联赛第四场--南阳理工学院
数据结构·算法·贪心算法·动态规划·哈希算法·广度优先