zoukankan      html  css  js  c++  java
  • 第194场周赛

    这次周赛比较惨,只做出了第一个题目。最终排名1700+

    1486. 数组异或操作

    第一个题目比较简单,就是去模拟异或的过程即可。

    class Solution 
    {
    public:
        int xorOperation(int n, int start) 
    	{
    		vector<int> nums;
    		
    		for(int i = 0;i < n;i++)
    		{
    			nums.push_back(start + 2 * i);
    		}
    		int ans = 0;	
    		for(int i = 0;i < n;i++)
    		{
    			ans = ans ^ nums[i];
    		}
    		
    		return ans;
        }
    };
    

    1487. 保证文件名唯一

    第二个题目我一开始的想法是用暴力解法,写出代码之后发现超时了。

    暴力解法的代码:

    class Solution 
    {
    public:
        vector<string> getFolderNames(vector<string>& names) 
    	{
    		vector<string> ans;
    		
    		unordered_set<string> s;
    		
    		for(int i = 0;i < names.size();i++)
    		{
    			const string str = names[i];
    			string temp = str;
    			int count = 1;
    			
    			while(s.find(temp) != s.end())
    			{
    				temp = str + "(" + to_string(count) + ")";
    				count++;
    			}
    			s.insert(temp);
    			ans.push_back(temp);
    		}
    		
    		return ans;
        }
    };
    

    这个题目的优化思路还是比较好想的,用一个unordered_map来记录文件名和文件名出现的次数,当查询到文件名已经在哈希表中时,不用从1开始逐渐递增,只要从unordered_mapvalue值开始递增。

    思路比较好想,但是代码实现上,我总是写不出来,最后看了闫神的代码才写出来。

    class Solution 
    {
    public:
        vector<string> getFolderNames(vector<string>& names) 
        {
            unordered_set<string> hash;
            unordered_map<string,int> cnt;  //key 是文件名 value是出现次数
            vector<string> ans;
    
            for(auto str : names)
            {
                string suc;
                int k = 0;
    
                if(cnt.count(str))
                {
                    k = cnt[str];
                }
    
                while(hash.count(str + suc))
                {
                    k++;
                    suc = "(" + to_string(k) + ")";
                }
                cnt[str] = k;
                hash.insert(str + suc);
                ans.push_back(str + suc);
            }
    
            return ans;
        }
    };
    
  • 相关阅读:
    【BZOJ2525】[Poi2011]Dynamite 二分+树形DP
    【BZOJ2560】串珠子 状压DP+容斥
    【BZOJ2726】[SDOI2012]任务安排 斜率优化+cdq分治
    [NOIP2017]宝藏 状压DP
    [NOIP2017]逛公园 最短路+拓扑排序+DP
    [NOIP2017]列队 离线+SBT
    【CF628D】Magic Numbers 数位DP
    【BZOJ2791】[Poi2012]Rendezvous 倍增
    sql 通过游标 拆分xml结构
    sql字符转换函数大全
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/13174282.html
Copyright © 2011-2022 走看看