avatar
n*5
1
给一个矩阵,只含有1,0 。可以翻转一次。可以翻转任意两个index之间所有的值,翻
转就是
1 -->0 0 -- >1
要求只翻转一次,希望翻转之后的矩阵里面的1 的个数最多。 求翻转一次,矩阵里面1
的数量的最大值。
比如矩阵 1 0 0 1 0 0 1 0
可以
翻转 [1, 5] ⇒ 1 1 1 0 1 1 1 0
或者
翻转 [1, 7] ⇒ 1 1 1 0 1 1 0 1
矩阵里面1的个数都是6,
这个是一次翻转之后,矩阵1的个数的最大值。
只用返回这个6就行了。
面试的人说他可以只用两个变量来完成。
我跪了之后想了很久。
可以只便利数组一次。
纪录 1出现的次数 n1
一个counter ,如果 0出现 counter 加加,如果1出现,counter 减减.counter小于0
就直接纪录为0。找到counter变化过程中的最大值。
返回n1 加 counter 最大值。
Q:
什么是 IoC
什么是 repository pattern
task-based model 与 threaded model 的区别
希望我的尸体能有点用...
avatar
y*e
2
天,后面的Q完全不会啊。。。
avatar
a*5
3
比俩月之前的BAR提高了好多
avatar
z*e
4
赞,继续加油.
avatar
e*7
5
确实……好难啊
avatar
T*u
6
第一题dp吗?
avatar
z*e
7
嗯,dp,我觉得是max sum 变种
avatar
p*8
8
什么是最大1的个数?

【在 n*****5 的大作中提到】
: 给一个矩阵,只含有1,0 。可以翻转一次。可以翻转任意两个index之间所有的值,翻
: 转就是
: 1 -->0 0 -- >1
: 要求只翻转一次,希望翻转之后的矩阵里面的1 的个数最多。 求翻转一次,矩阵里面1
: 的数量的最大值。
: 比如矩阵 1 0 0 1 0 0 1 0
: 可以
: 翻转 [1, 5] ⇒ 1 1 1 0 1 1 1 0
: 或者
: 翻转 [1, 7] ⇒ 1 1 1 0 1 1 0 1

avatar
l*n
9
楼主好人,bless楼主继续拿到大offer。
那个。。。能解释一下第一题求最大的1的个数是个神马意思吗。。。?
avatar
n*5
10
抱歉,更新了题目...
avatar
f*y
11
多谢分享!
算法题的描述有点看不懂。
Q的问题,我都不知道啊。 有大牛解释解释吗?
顺便问一下楼主面的职位是不是和这些问题有关?
avatar
p*g
12
给你一个这个吧, 两个变量的做不出。
public static int maxOnes3(int[] A) {
if (A == null || A.length == 0)
return 0;
int max = 0;
int last = (A[0] == 0 ? 1 : 0);
int cur;
int num = A[0];
for (int i = 1; i < A.length; i++) {
num += A[i];
cur = last + (A[i] == 0 ? 1 : -1);
if (cur < 0)
cur = 0;
if (cur > max) {
max = cur;
}
last = cur;
}
return num + max;
}
avatar
p*8
13
谢谢,你的方法是对的,就是加强版的max sum, 不过这要求太高了吧,电面就这么难

【在 n*****5 的大作中提到】
: 抱歉,更新了题目...
avatar
p*g
14
大家努力刷题吧, 以后bar会越来越高的。
都是中国人自己刷上去的,和高考一样, 很快衡水一中模式就到北美了。
我自己哭会去了。

【在 p*******8 的大作中提到】
: 谢谢,你的方法是对的,就是加强版的max sum, 不过这要求太高了吧,电面就这么难
avatar
S*d
15
int maxOneAfterFlip(vector & arr)
{
int n = arr.size();
int count = 0;
int maxLen = 0;
int one = 0;
int zero = 0;
int i = 0;
for (; i < n && arr[i] == 1; ++i, maxLen++);
--n;
for (; i <= n && arr[n] == 1; --n, maxLen++);
for (; i <= n; i++)
{
if (arr[i] == 1)
{
one++;
}
else
{
zero++;
}

if (zero <= one)
{
maxLen += one;
zero = 0;
one = 0;
}

}
maxLen += (zero >= one?zero: one);
return maxLen;
}
avatar
w*1
17
max sum of subarray
avatar
Q*w
18
怎么还问design pattern。。请问lz是new grad吗?多谢
avatar
c*g
19
dp?
遍历,记录if (counter ==0) counter ++; lastest 为1的位置和最大值对应的index?
如果不用返回index,确实似乎2个应该够。
avatar
n*n
20
什么叫两个index之间?矩阵是二维啊

面1

【在 n*****5 的大作中提到】
: 给一个矩阵,只含有1,0 。可以翻转一次。可以翻转任意两个index之间所有的值,翻
: 转就是
: 1 -->0 0 -- >1
: 要求只翻转一次,希望翻转之后的矩阵里面的1 的个数最多。 求翻转一次,矩阵里面1
: 的数量的最大值。
: 比如矩阵 1 0 0 1 0 0 1 0
: 可以
: 翻转 [1, 5] ⇒ 1 1 1 0 1 1 1 0
: 或者
: 翻转 [1, 7] ⇒ 1 1 1 0 1 1 0 1

avatar
J*o
21
楼主提供的方法很明确了啊, 不用dp。
Q:
什么是 IoC
什么是 repository pattern
task-based model 与 threaded model 的区别
。。。repository pattern面试真的也要准备吗
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。