zoukankan      html  css  js  c++  java
  • [LeetCode] Read N Characters Given Read4

    To read n characters, we first call read4 for n / 4 times. For example, if we want to read 10 characters, we will read them in the 8 (4 * 2) + 2 manner by first calling read4 for 2 (n / 4) times to read the 8 characters.

    Then we see if there is any remaining number of characters to read (in this case, remain = 2).

    If remain > 0, we read them again using read4. However, we may not be able to read all of them. For example, buf has 9 characters and we need to read 10. After reading the characters we can only read the remaining 1 character. In this case, we simply add the minimum of remain and the actual number of characters read by read4 to the couter (total) and return it.

    Otherwise, we are done and just return n.

    The code is as follows.

     1 // Forward declaration of the read4 API.
     2 int read4(char *buf);
     3 
     4 class Solution {
     5 public:
     6     /**
     7      * @param buf Destination buffer
     8      * @param n   Maximum number of characters to read
     9      * @return    The number of characters read
    10      */
    11     int read(char *buf, int n) {
    12         int total = 0;
    13         for (int i = 0; i < n / 4; i++) {
    14             int read = read4(buf + total);
    15             total += read;
    16         }
    17         int remain = n - total;
    18         if (remain) {
    19             int read = read4(buf + total);
    20             return total + min(read, remain);
    21         }
    22         return n;
    23     }
    24 };
  • 相关阅读:
    基于VLC的视频播放器
    IOS开发之新浪微博OAuth2
    Android之官方导航栏ActionBar
    IOS中键盘隐藏几种方式
    在Android中使用Android Ksoap2调用WebService
    Android之属性动画(二)
    IOS 内存管理
    利用scp 远程上传下载文件/文件夹和ssh远程执行命令
    Centos 检查磁盘读写性能
    JPA, JNDI, OSGi
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4554948.html
Copyright © 2011-2022 走看看