关注
显然这个算法的复杂度太糟糕了,每移动1个0就放弃了上一次移动变化的所有信息,如同冒泡一样去移动0。现在可以从这个算法上改进。
观察发现,从最高位开始,在第t位遇到的第一个0称为首0,如果遇到00,则无条件变为10,首0向后了一位,如果遇到01,如果想把0->1则至少要找到形如0+x个1+0的结构变为10+x个1,对于n-t+1位已经达到最大,对于t+1位后的0取决于x个1后,如果遇到0,则变成1并让首0向后一位,如果遇到1,则x->x+1
function solution(int arr[],int size){
int t;
for(t=0;t<size;t++){
if(arr[t]!=0) break;
}
for(int i=t;i<size;i++){
if(arr[i]==0){
if(i==size-1) break;
if(arr[i+1]==0){
arr[i]=1;
}else{
int t0=0,tp;
for(int j=i+2;j<size;j++){
if(arr[j]==0){
t0++;
arr[j]=1;
tp=j;
}
}
if(t0!=0){
swap(arr[min(i+t0,j)],arr[i]);
}
break;
}
}
return arr;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 牛客树洞,我想对你说 #
26974次浏览 195人参与
# 选择和努力,哪个更重要? #
116088次浏览 933人参与
# 快手技术岗信息交流阵地 #
10388次浏览 70人参与
# 秋招许愿,本周能____ #
4904次浏览 47人参与
# 新凯来求职进展汇总 #
56106次浏览 147人参与
# 为了实习逃课值吗? #
2813次浏览 38人参与
# “vivo”个offer #
5473次浏览 46人参与
# 大学最后一个寒假,我想…… #
57689次浏览 636人参与
# 华为海思工作体验 #
31989次浏览 136人参与
# 运营每日一题 #
105928次浏览 874人参与
# 如何KTV领导 #
75541次浏览 512人参与
# 除了主业以外,你还有哪些其他收入? #
33438次浏览 299人参与
# 哪些公司校招卡第一学历 #
216626次浏览 770人参与
# 你最满意的offer薪资是哪家公司? #
44219次浏览 218人参与
# 25届非技术实习投递记录 #
133549次浏览 993人参与
# 你最近一次加班是什么时候? #
95448次浏览 518人参与
# 求职中的尴尬瞬间 #
10107次浏览 69人参与
# 应届生被毁约被毁意向了怎么办 #
49502次浏览 283人参与
# 硬件人的春招flag #
54015次浏览 436人参与
# 秋招想进国企该如何准备 #
99777次浏览 499人参与
# 歌尔求职进展汇总 #
69950次浏览 357人参与
# 为什么国企只招应届生 #
210437次浏览 1241人参与
查看4道真题和解析
