Valid Mountain Array
判断一个数组是不是先增加后减少. 这个我第一次是前后扫做的, 后来看了眼答案, 答案是计数法做的. 就是算增加有多少, 减少有多少, 然后比较是不是全体数都算进去了.
判断一个数组是不是先增加后减少. 这个我第一次是前后扫做的, 后来看了眼答案, 答案是计数法做的. 就是算增加有多少, 减少有多少, 然后比较是不是全体数都算进去了.
找到有多少对pair, (i, j) == (a,b) where i ==a && j == b or i == b && j == a. 就是做个hash就可以, 两个数都是十以内的, 所以可以先sort一下, 然后变成string. 然后就找到多少个相同的元素. 然后求组合.
找到n个string之间的共享字符. 既然是共享毕竟每两个都有. 所以先count一个string的字符, 然后算min找到共享.
简单的counting题.
给一个数组, 找到其中有多少对数的和整除60。这里上来先取模,然后就是2sum pair
求一个数组能不能分为三个小数组,并且这三个小数组的和相等。我们已知目标是三个小数组,所以数组能被3整除。然后再找到小数组目标和是多少。计算是否有三个小数组的目标和。
用一个count来计算”(“和”)”的差,0就是最外边的。
原题:http://codeforces.com/contest/567/problem/B 题目大意: 一个计数器, +号代表一个人进入图书馆, -号代表一个人出去图书馆. 给一个log, 问这个log中能知道的这个图书馆最小的可能容量是多少, log是片段, 在program运行前可能图书馆已经有人, 在运行后也可能人还没出去? 分析: 因为log不能完全记录图书馆的信息, 有可能第一条就是-号,所以我们需要用个数组记录一下人来往的信息. 但是当发现有人出去但是没有进入的信息, 我们就知道在当前时候, 图书馆的容量应该比记录的容量多1. 换句话说, 当发现一个人走出来但是没有被记录进去, 我们只能认为这个人一直在图书馆里. public void solve(int testNumber, InputReader in, OutputWriter out) { int n = in.readInt(); boolean[] t = new boolean[1000010]; int cap = 0; int cur = 0; for (int i = 0; i < n; i++) { […]