题解 | #刷墙#

刷墙

http://www.nowcoder.com/practice/748b891f208744a7b1f98cb4c45bde11

题比较坑

import java.io.*;

public class Main {
  public static void main(String[] args) throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      int N = Integer.parseInt(br.readLine().trim());
      String line = br.readLine().trim();
      int[] nums = new int[N];
    
      for (int i = 0; i < N; i++) {
          nums[i] = line.charAt(i) - '0';
      }
       
      if (N <= 0) System.out.println(0);
      else System.out.println(doIt(N, nums));
  }
       
  static int doIt(int N, int[] nums) {
      int[] temp = new int[N];
      temp[0] = nums[0];
      for (int i = 1; i < N; i++) {
          temp[i] = temp[i - 1] + nums[i];
      }
      // temp 保存 0 ~ i 区间的 1 的总和
      int ans = Math.min(temp[N - 1], N - temp[N - 1]);
      // ans 为 蓝->红 或 红->蓝 的最小值
      for (int i = 0; i < N; i++) {
          // i + 1 - temp[i] : 0 到 i 左边 0 的个数
          // 左边总元素个数减去 temp 的 i 对应 1 的值
          // temp[n - 1] - temp[i] 为 右边 1 的个数
          ans = Math.min(ans, i + 1 - temp[i] + temp[N - 1] - temp[i]);
      }
      return ans;
  }
}
全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
千千倩倩:简历问题有点多,加v细聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务