力扣简单题记录(持续更新)

力扣简单题


2019年6月1日
#力扣刷题的记录,方便以后整理归纳,也算是鼓励自己去学习编程,代码其实写的很菜,慢慢成长。

#1.两数之和

class Solution {
public:
    
    vector<int> twoSum(vector<int>& nums, int target)
    {
        vector<int> a;
        int flag = 0;
        for(int i = 0; i<nums.size() ; i++)
        {
            for(int j = nums.size()-1; j>=0 ; j--)
            {
                if(i==j)
                    break;
                if(nums[i]+nums[j]==target)
                {
                    a.push_back(i);
                    a.push_back(j);
                    flag = 1;
                    break;
                }
                
            }
            if(flag)
                break;
        }
        return a;
    }
};

#整数反转

class Solution {
public:
    int reverse(int x) {
        int flag = 0;
        long long p = x;
        if(p<0)
        {
            flag = 1;
            p = p*-1;
        }
        long long ans = 0;
        int q = 1,temp = 0;
        while(p)
        {
            temp = p%10;
            ans  = ans*10+temp;
            p/=10;
        }
        if(ans>2147483647)
            return 0;
        else
        {
            if(flag)
                return ans*-1;
            else 
                return ans;
        }
    }
};

#回文数

class Solution {
public:
    bool isPalindrome(int x) {
        char s[100];
        if(x<0)
            return false;
        else if(x==0)
            return true;
        else
        {
            if(x%10==0)
                return false;
            else
            {
                int i = 0;
                while(x)
                {
                    s[i++] = x%10+'0';
                    x/=10;
                }
                int len = i;
                i--;
                for(int j = 0;j<=(len>>1);j++,i--)
                {
                    if(s[j]!=s[i])
                        return false;
                }
                return true;
            }
        }
    }
};

#有效的括号

class Solution {
public:
     stack<char>a;
    int l=0,r=0;
    bool isValid(string s) {
        for(int i = 0; i<s.length() ; i++)
        {
            if(s[i]=='('||s[i]=='{'||s[i]=='[')
                l++;
            if(s[i]=='}'||s[i]==']'||s[i]==')')
                r++;
        }
        if(l!=r)
            return false;
        for(int i = 0; i<s.length() ; i++)
        {
            
            if(s[i]=='(')
                a.push('(');
            if(s[i]=='{')
                a.push('{');
            if(s[i]=='[')
                a.push('[');
            if(s[i]==']')
            {
                if(!a.size())return false;
                if(a.top()!='[')
                    return false;
                a.pop();
            }
            if(s[i]=='}')
            {
                if(!a.size())return false;
                if(a.top()!='{')
                    return false;
                a.pop();
            }
            if(s[i]==')')
            {
                if(!a.size())return false;
                if(a.top()!='(')
                    return false;
                a.pop();
            }
        }
        if(!a.size())
            return true;
        return false;
    }
};

#删除排序数组中的重复项

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size()<2)
            return nums.size();
        int i,j{0};
        for(i = 1;i<nums.size();i++)
        {
            if(nums[j]!=nums[i])
                nums[++j] = nums[i];
        }
        return j+1;
    }
};

#移除元素

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        vector<int>::iterator it;
        for(it = nums.begin();it!=nums.end();it++)
        {
            if(*it==val)
            {
                nums.erase(it);
                it--;
            }
        }
        return nums.size();
    }
};

#实现strstr

class Solution {
public:
    int strStr(string haystack, string needle) {
        size_t p;
        p = haystack.find(needle);
        if(p!=string::npos)
            return (int)p;
        return -1;
    }
};

#搜索插入位置

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int flag = 0;
        int ans;
        for(int i = 0; i<nums.size() ; i++ )
        {
            if(nums[i]==target)
            {
                flag = 1;
                ans = i;
            }
        }
        if(!flag)
        {
            if(target>nums[nums.size()-1])
                return nums.size();
            else
                return upper_bound(nums.begin(),nums.end(),target)-nums.begin();
        }
            
        return ans;
    }
};

你可能感兴趣的:(刷题,学习记录)