LeetCode 初级算法


删除排序数组中的重复项

image

class Solution {
public:
    int removeDuplicates(vector& nums) {
        int size=nums.size();//获取数组的长度
        int left=0;//定义左指针
        int right=1;//定义右指针
        for(int i=right;i

image

买卖股票的最佳时机 ΙΙ

image

class Solution {
public:
    int maxProfit(vector& prices) {
        //本题相当于求所有上升区间的总和,最简单的方法是贪心法
        int max=0;//收益最大值
        for(int i=1;i0){
                //如果差值大于0,则卖出
                max+=price;
            }
        }
        return max;
    }
};

image

旋转数组

image

class Solution {
public:
    void reverse(vector& nums,int start,int end){
        while(start& nums, int k) {
        int size=nums.size();
        k%=size;
        reverse(nums,0,size-1);
        reverse(nums,0,k-1);
        reverse(nums,k,size-1);
    }
};

解题思路

image.png

image

存在重复元素

image

class Solution {
public:
    bool containsDuplicate(vector& nums) {
        //先排序再比较
        sort(nums.begin(),nums.end());
        for(int i=1;i

image

只出现一次的数字

image