leetcode 286次周赛代码

2215. 找出两数组的不同

第一题直接过了,哈希表

class Solution {
public:
    vector> findDifference(vector& nums1, vector& nums2) {
        unordered_sethash1;
        unordered_sethash2;
        sort(nums1.begin(),nums1.end());
        sort(nums2.begin(),nums2.end());
        nums1.resize(distance(nums1.begin(), unique(nums1.begin(), nums1.end())));
        nums2.resize(distance(nums2.begin(), unique(nums2.begin(), nums2.end())));
        int m=nums1.size();
        int n=nums2.size();
        vector>res(2);
        for(int i=0;i



5236. 美化数组的最少删除数

TLE了,有空再研究下咋回事

class Solution {
public:
    int minDeletion(vector& nums) {
        int n=nums.size();
        int i=0;
        vectortemp(n,0);
        int res=0;
        for(int i=0;i

应该是性能太差了,数据量大的时候就TLE。重写代码如下:

class Solution {
public:
    int minDeletion(vector& nums) {
        int n=nums.size();
        int res=0;
        for(int i=0;i

简洁又好用啊。 




2217. 找到指定长度的回文数

以下代码应该是思路没问题但还是会TLE 

class Solution {
public:
    vector kthPalindrome(vector& queries, int intLength) {
        int n=(intLength+1)/2;
        int m=queries.size();
        vectorres;
        int start=pow(10,n-1);
        int count=0;
        sort(queries.begin(),queries.end());
        for(int i=0;i=start*10)
                {
                    res.push_back(-1);
                    continue;
                }
                string temp=to_string(start+i);
                for(int j=n+1;j<=intLength;j++)
                {
                    temp.push_back(temp[intLength-j]);
                }
                res.push_back(stoi(temp));
                count++;
            }
        }
        return res;
    }
};

修改思路,不再做无用遍历就可以了。

class Solution {
public:
    vector kthPalindrome(vector& queries, int intLength) {
        int n=(intLength+1)/2;
        int m=queries.size();
        vectorres;
        int start=pow(10,n-1);
        int count=0;
        //sort(queries.begin(),queries.end());
        for(int i=0;istart*9)
                {
                    res.push_back(-1);
                    continue;
                }
                string temp=to_string(start+queries[i]-1);
                for(int j=n+1;j<=intLength;j++)
                {
                    temp.push_back(temp[intLength-j]);
                }
                res.push_back(stoll(temp));
            //}
        }
        return res;
    }
};




2218. 从栈中取出 K 个硬币的最大面值和

回溯一定TLE

class Solution {
public:
    vectortemp;
    int res;
    void seize(int n,int k,int count,vector>& piles)
    {
        if(k==0)
        {
            res=max(count,res);
            return;
        }
        for(int i=0;i>& piles, int k) {
        int n=piles.size();
        res=0;
        for(int i=0;i

你可能感兴趣的:(leetcode,周赛,leetcode,c++,算法)