zoukankan      html  css  js  c++  java
  • Leetcode 第36场双周赛(第二三题):论我跟dl的区别

     就这个题!!!!

    我:

     1 class Solution {
     2 public:
     3     vector<string> alertNames(vector<string>& keyName, vector<string>& keyTime) {
     4         map<string,set<string>> m;
     5         vector<string> ans;
     6         for(int i=0;i<keyName.size();i++){
     7             m[keyName[i]].insert(keyTime[i]);
     8         }
     9         for(auto it=m.begin();it!=m.end();it++){
    10             if(it->second.size()<3)
    11                 continue;
    12 
    13                 auto it1 = it->second.begin();
    14                 string time = *it1;
    15                 int prev = ((time[0]-'0')*10+time[1]-'0')*60+(time[3]-'0')*10+time[4]-'0';
    16                 it1++; 
    17                 time = *it1;
    18                 int mid = ((time[0]-'0')*10+time[1]-'0')*60+(time[3]-'0')*10+time[4]-'0';
    19                 it1++;
    20                 for(;it1!=it->second.end();it1++){
    21                     time=*it1;
    22                     int curr=((time[0]-'0')*10+time[1]-'0')*60+(time[3]-'0')*10+time[4]-'0';
    23                     if(curr-prev<=60){
    24                         ans.push_back(it->first);
    25                         break;
    26                     }
    27                       
    28                         prev=mid;
    29                         mid=curr;
    30                 }
    31 
    32             }
    33         
    34         return ans;
    35     }
    36 };

    就是,,,用Map每个名字存一下嘛,然后比较的时候,全化成分钟,然后用i和i-2比就行,然后前两个额话是单独搞就好(要不不太好整)

    所以还是感觉STL是个好家伙,,,,,

    不过我这个题写了四十多分钟emmmmmmmmm,主要原因就是 ,,,,,,,我,漏了一个等号,,,,后来找不到,看一个DL的题解才找到了bug

    然鹅:

    (选自https://www.cnblogs.com/Crossea/p/13766510.html)

     1 class Solution {
     2 public:
     3     int convert(string s){
     4        
     5         return 60*((s[0]-'0')*10+s[1]-'0')+(s[3]-'0')*10+s[4]-'0';
     6     }
     7     vector<string> alertNames(vector<string>& keyName, vector<string>& keyTime) {
     8         // set<string> res;
     9         vector<string> ans;
    10         map<string, vector<int> > mp;
    11         for(int i=0; i<keyName.size(); i++){
    12             mp[keyName[i]].push_back(convert(keyTime[i]));
    13         }
    14         for(auto e:mp){
    15             vector<int>& t = e.second;
    16             sort(t.begin(), t.end());
    17             for(int i=0; i<t.size(); i++){
    18                 auto pos = upper_bound(t.begin(), t.end(), t[i]+60);
    19                 if(distance(t.begin()+i, pos)>=3){
    20                     ans.push_back(e.first);
    21                     break;
    22                 }
    23             }
    24         }
    25         return ans;
    26     }
    27 };

    其实也就差个十行,,,但是仔细一看,,,,每一行都是知识点。。。

    首先是那个排序,,,我很服直接就把那个跨天给解决了(当时还觉得这一块需要什么判断啥的,其实根本就,,,,不过我后来直接作差大于0小于等于六十也可以的)

    for each循环吗,,,,

    还有就是最后那块,,,,,我感觉我无论怎么想,都会搞一个作差(甚至当时还像两个循环,像冒泡那样)

    诶呀也该更新一下陈旧的大脑了

    瞅瞅这位那个,是用upper_bound找到那个值,再用distance 算距离,两行QAQ

    刚刚

    交了一下,DL这款比我那款慢一些,但是也是双百,,,,,
     
     
     
    呐呐呐呐呐,我咋就这么菜呀
     
     
    第三题吗,我就直接不会了QAQ

    copy内容:

    注意到的是,对于矩阵的一个位置 ans[i][j]
    这个数加上K也就是使得rowSum[i]和colSum[j]加上K
    那么体现在从0开始的时候,也就是使得rowSum[i]和colSum[j]不小于0
    那么从上往下直接取min(rowSum[i], colSum[j])即可

     1 class Solution {
     2 public:
     3     vector<vector<int>> restoreMatrix(vector<int>& rowSum, vector<int>& colSum) {
     4         int n = rowSum.size();
     5         int m = colSum.size();
     6         vector<vector<int> > ans(n, vector<int> (m,0));
     7         for(int i=0; i<n; i++){
     8             for(int j=0; j<m; j++){
     9                 ans[i][j] = min(rowSum[i], colSum[j]);
    10                 rowSum[i] -= ans[i][j];
    11                 colSum[j] -= ans[i][j];
    12             }
    13         }
    14         return ans;
    15     }
    16 };

    我跟大佬的区别呀,,,,,

    努力让自己的能力跟大佬差距别那么惊人吧

  • 相关阅读:
    HDU 1513 最长子序列
    HDU 3033 分组背包变形(每种至少一个)
    HDU 1712 分组背包
    深度学习
    《将博客搬至CSDN》
    UVa 10917 Dijkstra
    hdu 3839 Ancient Messages (dfs )
    LA 4255 UVa1423 拓扑排序
    poj 2515 差分序列,排列组合
    UVA 10054 the necklace 欧拉回路
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/13768399.html
Copyright © 2011-2022 走看看