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 };

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

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

  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/13768399.html
Copyright © 2011-2022 走看看