0
点赞
收藏
分享

微信扫一扫

一些奇怪的记录(周赛总结)

南陵王梁枫 2022-03-11 阅读 84
leetcodec++

leetcode周赛&&双周赛

双周赛
1.sort有pair可以自动按第二个排序。。。
5217. 将杂乱无章的数字排序

vector<int> sortJumbled(vector<int>& mapping, vector<int>& nums) {
        
        //cout<<nums[0]<<endl;
        //cout<<mapping[0]<<endl;
        vector<pair<int,int>>a(nums.size());
        for(int i=0;i<nums.size();i++)
        {
            int num=0,shuzi=nums[i],cnt=1;
            if(shuzi==0)
            {
                a[i]={mapping[shuzi%10],i};
                //if(i==0)continue;
            //cout<<a[0]<<" "<<a[1]<<endl;
                // cout<<a[i].first<<" "<<a[i].second<<endl;
                 continue;
            }
            while(shuzi)
            {
                
                num=num+mapping[shuzi%10]*cnt;
                shuzi=shuzi/10;
                cnt*=10;
            }
            //cout<<i<<" "<<num<<endl;
            //a[i].first=num;
            a[i]={num,i};
            //if(i==0)continue;
            
        }
        //pair自带比较
        sort(a.begin(),a.end());
        vector<int>ans(nums.size(),0);
        for(int i=0;i<nums.size();i++)
        {
            ans[i]=nums[a[i].second];
        }
        return ans;
    }

2.我的图论和stl真的好烂(,想出来了不知道咋用(指set)拓扑也想到了,麻,最后还是vector

class Solution {
public:
    int n;
    vector<vector<int>>ans;
    void dfs(int u, vector<vector<int>>& gra,int r,vector<int>&visited)
    {
        if(visited[u])return;
        visited[u]=1;
        
        for(int j=0;j<gra[u].size();j++)
        {
            if(visited[gra[u][j]])continue;
            dfs(gra[u][j],gra,r,visited);
            ans[gra[u][j]].push_back(r);
        }
        
    }
    vector<vector<int>> getAncestors(int n, vector<vector<int>>& edges) {
        this->n=n;
        ans.resize(n);
        vector<vector<int>>gra(n);//graph
        vector<int>visited(n,0);
        //create graph
        for(int i=0;i<edges.size();i++)
        {
            gra[edges[i][0]].push_back(edges[i][1]);
        }
        for(int i=0;i<n;i++)
        {
            fill(visited.begin(),visited.end(),0);
            dfs(i,gra,i,visited);
        }
        return ans;
    }
};

3.unordered_map遍历
(以前哪题做过又忘了)

for (auto [i, node] : v)
            if (deg[i] == 0)
                return node;
举报

相关推荐

0 条评论