全部评论
为什么Js不能平时那样写个函数体就行了,这个输入真的搞的我心态炸了
感觉第三题这种题目……光是处理输入就麻烦死了,哎,为啥不能像leetcode一样处理干净输入输出……
第二题我用的二分查找O(nlogn)也过了,代码: #include <iostream>
using namespace std;
const int MAXN = int(2e6 + 10);
int A[MAXN];
int preSum[MAXN];
/*
3 3
1 2 3
4 5 6
7 8 9
*/
int lower_bound(int p[], int l, int r, int target) {
while (l < r) {
int m = l + (r - l) / 2;
if (p[m] >= target) {
r = m;
} else {
l = m + 1;
}
}
return l;
}
int main () {
int n, s;
cin >> n >> s;
for (int i = 0; i < n; ++i) {
cin >> A[i];
if (i == 0) preSum[i] = A[i];
else preSum[i] = preSum[i - 1] + A[i];
}
// for (int i = 0; i < n; ++i) {
// cout << preSum[i] << " ";
// }
int max_len = (A[0] <= s);
for (int i = 1; i < n; ++i) {
// Sum([i, j]) = p[j] - p[i - 1] <= s
// p[i - 1] >= p[j] - s
int left = lower_bound(preSum, -1, i, preSum[i] - s);
max_len = max(max_len, i - left);
}
cout << max_len << endl;
return 0;
}
第一题 #include <iostream>
using namespace std;
const int MAXN = 1010;
int A[MAXN][MAXN];
/*
3 3
1 2 3
4 5 6
7 8 9
*/
int main () {
int N, M;
cin >> N >> M;
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j)
cin >> A[i][j];
int sr = 0, sc = 0;
int tr = N - 1, tc = M - 1;
int cnt = 0;
while (cnt < M * N) {
// cout << sr << ", " << sc << endl;
// cout << tr << ", " << tc << endl;
for (int r = sr; r <= tr; ++r) {
cout << A[r][sc] << " ";
cnt++;
}
for (int c = sc + 1; c <= tc; ++c) {
cout << A[tr][c] << " ";
cnt++;
}
if (sr < tr && sc < tc) {
for (int r = tr - 1; r >= sr; --r) {
cout << A[r][tc] << " ";
cnt++;
}
for (int c = tc - 1; c > sc; --c) {
cout << A[sr][c] << " ";
cnt++;
}
}
sr++, sc++;
tr--, tc--;
}
return 0;
}
我的代码,供参考https://www.nowcoder.com/discuss/261441?toCommentId=4082824
地铁上的我,完美错过
求第二题思路~!
同求第二题思路
同求第二题
两个题自测都过了但是case都是0啊。。。第二题说超时了
求答案
蹲题面
😂我也是,一看第三题说很难调,看了一下感觉确实难调,直接提交了
🤣还剩25分钟看了第三题,直接提交了 第一题一直95%,没懂什么情况
第二题看错题了,没看到连续,改了半天。。然后剩30min看最后一题,完全没心思做了
第三道题例子没过,提交之后40%....
第二题树状数组或者线段树应该能做,最后没时间了
第一题只有15%……leetcode原题目是顺时针,你是怎么变为逆时针的。我直接把矩阵转置,提醒超时
感觉人均 2 个啊,第三题是个锤子,输入输出都写了半天🤣
给我发错了笔试邮箱,错过了
相关推荐