由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教个LC的新题
相关主题
leetcode 的新题好像不太理解题意能有人稍微给我解释下read4 java的leetcode给出的解法吗?半懂
LC的简单版Read4是这样吗?FB面经
一个答案看不明白谁解释一下read4 vs read4II 到底啥区别?
周末上道小题吧anagram的G家SET面经新题求解
最郁闷的facebook面试+面经。请问strcpy()和memcpy()的写法问题
Count Inversions 求助facebook on site后多久给消息啊
fb面试题【转】a MS interview question about C++
read4 / read4k 实现readAny复杂吗?用 c 实现的字符串 permutation,求批评指点
相关话题的讨论汇总
话题: leftover话题: left话题: newn话题: result话题: count
进入JobHunting版参与讨论
1 (共1页)
g****v
发帖数: 971
1
Read N Characters Given Read4 II - Call multiple times
测试的输出是:
Input: "ab", [read(0),read(1),read(2),read(1)]
Output: ["","a","b","b"]
Expected: ["","a","b",""]
我的思路很简单,就是把上次没读完的保留下来(并且是把没读完的字符移动到index
0). 下次读的时候先读上次剩下的。但不知道为什么不对?
class Solution {
int left = 0; //length of left chars of last time reading, staring from
0 of leftover.
char leftover[4];//left chars are stored here.
public:
/**
* @param buf Destination buffer
* @param n Maximum number of characters to read
* @return The number of characters read
*/
int read(char *buf, int n) {
if(n==0) return 0;

//if leftover has more chars than that of to-read
if(n <= left)
{
memcpy(buf, leftover, n);
left = left - n;
for(int i=0;i leftover[i] = leftover[i+n];
return n;
}
int result = 0;
//copy leftover first if they exist.
if(left != 0)
{
memcpy(buf, leftover, left);
result += left;
}
//now we need read n-left chars to buf+left
int count = 0;
int newn = n - left;

while(result < newn)
{
count = read4(leftover);
if(count == 0 )
{
left = 0;
break;
}
if(result + count <= newn)
{
memcpy(buf+left+result, leftover, count);
result += count;
if(count < 4)
{
for(int i=0;i leftover[i] = leftover[i+count];
left = newn-count;
break;
}
}
else
{
memcpy(buf+left+result, leftover, newn-result);

for(int i=0;i leftover[i] = leftover[i+newn-result];
left = count-(newn-result);
result = n;
}
}


return result;

}
};
g****v
发帖数: 971
2
up
g****v
发帖数: 971
3
up
l*********u
发帖数: 19053
4
for(int i=0;i leftover[i] = leftover[i+n];
return n;// this one?

index
from

【在 g****v 的大作中提到】
: Read N Characters Given Read4 II - Call multiple times
: 测试的输出是:
: Input: "ab", [read(0),read(1),read(2),read(1)]
: Output: ["","a","b","b"]
: Expected: ["","a","b",""]
: 我的思路很简单,就是把上次没读完的保留下来(并且是把没读完的字符移动到index
: 0). 下次读的时候先读上次剩下的。但不知道为什么不对?
: class Solution {
: int left = 0; //length of left chars of last time reading, staring from
: 0 of leftover.

g****v
发帖数: 971
5
谢谢,这个地方不对,但是这个testcase没运行到这段。
改完后还是相同的错误。

【在 l*********u 的大作中提到】
: for(int i=0;i: leftover[i] = leftover[i+n];
: return n;// this one?
:
: index
: from

1 (共1页)
进入JobHunting版参与讨论
相关主题
用 c 实现的字符串 permutation,求批评指点最郁闷的facebook面试+面经。
这个拷贝构造函数有什么问题?Count Inversions 求助
昨天的F家店面fb面试题【转】
小公司面经read4 / read4k 实现readAny复杂吗?
leetcode 的新题好像不太理解题意能有人稍微给我解释下read4 java的leetcode给出的解法吗?半懂
LC的简单版Read4是这样吗?FB面经
一个答案看不明白谁解释一下read4 vs read4II 到底啥区别?
周末上道小题吧anagram的G家SET面经新题求解
相关话题的讨论汇总
话题: leftover话题: left话题: newn话题: result话题: count