zoukankan      html  css  js  c++  java
  • Contest 158

    2019-10-14 15:30:38

    总体感受:这次依然很快搞定了前三题,最后一题乍看之下还是比较简单的,但是出奇多的corner case让我非常苦恼,这也让我意识到要想真正征服最后一题,还有一个能力需要培养,就是自己设计case的能力。

    这也让我想到了当初实习的最后一次面试,xu问的问题题面非常简单,但是同样是corner case非常的多,当时也是没有很好的处理。

    一个题目标为hard,有的是因为代码量巨大(参照双拓扑),有的因为本身算法难度较大(参照dp使数组升序),本次就是另一种原因,就是各种情况的讨论。

    多情况讨论,corner case的复杂性可以显著提高问题的难度。

    注意点: 要特别主要corner case,在面对看似简单的题目的时候需要独立的设计一些case来测试算法。另外对空间复杂度的估算还是有问题,这次没敢开数组,其实是完全没有问题的。

    基于poj的数据,大致的空间限制为10000k,而开10000大小的int[],占用的空间大小仅仅40k,远远达不到mle。

    • 1224. Maximum Equal Frequency

    问题描述:

     

    问题求解:

    对于每一个位置来说,有两种选择。

    一是将之删除,那么其余的数字的出现次数一定是一样的,这个其实可以在统计前一个数字的时候的到结果;

    二是将之保留,那么在前面的数字中必然出现了一个数字的出现次数为1,或者当前出现次数 + 1,并且这个数字是独苗,这样才能达到删除一个数,让剩余数字的出现次数完全一致的现象。

        public int maxEqualFreq(int[] nums) {
            int n = nums.length;
            int[] count = new int[100001];
            int[] freq = new int[100001];
            int res = -1;
            for (int i = 0; i < n; i++) {
                int num = nums[i];
                freq[count[num]] -= 1;
                int cnt = ++count[num];
                freq[count[num]] += 1;
                // 若目前所有数字的出现次数相等,那么下一个数字就可以删除
                if (cnt * freq[cnt] == i + 1 && i != n - 1) res = Math.max(res, i + 1);
                // 保留当前的数字,那么必然有一个数字的出现次数
                int rest = i + 1 - cnt * freq[cnt];
                if ((rest == 1 || rest == cnt + 1) && freq[rest] == 1) res = Math.max(res, i);
            }
            return res + 1;
        }
    

      

  • 相关阅读:
    update inner join
    Centos 7安装docker
    使用Let's Encrypt搭建永久免费的HTTPS服务
    upstream timed out (10060: A connection attempt failed because the connected party did not properly respond
    MySQL死锁分析一例
    solr定时更新索引遇到的问题(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)
    Java中的关键字 transient
    Spring 4 使用Freemarker模板发送邮件&添加附件
    Spring 4 创建REST API
    Spring 4 异常处理
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/11671746.html
Copyright © 2011-2022 走看看