关注
显然这个算法的复杂度太糟糕了,每移动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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
01-02 11:44
门头沟学院 C工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
10595次浏览 132人参与
# 你认为工作的意义是什么 #
249195次浏览 1498人参与
# 程序员找工作至少要刷多少题? #
18336次浏览 246人参与
# 为了减少AI幻觉,你注入过哪些设定? #
4545次浏览 147人参与
# 我现在比当时_,你想录用我吗 #
8639次浏览 111人参与
# 机械人避雷的岗位/公司 #
43370次浏览 298人参与
# 一张图晒一下你的AI员工 #
5001次浏览 114人参与
# 论秋招对个人心气的改变 #
10778次浏览 154人参与
# 关于春招/暑期实习,你想知道哪些信息? #
7424次浏览 119人参与
# 刚入职的你踩过哪些坑 #
6790次浏览 127人参与
# AI Coding的使用心得 #
4605次浏览 101人参与
# 晒晒你司的新年福利 #
8418次浏览 105人参与
# 牛客AI体验站 #
6713次浏览 185人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1948次浏览 47人参与
# 柠檬微趣工作体验 #
14772次浏览 83人参与
# 总结:哪家公司面试体验感最差 #
92988次浏览 430人参与
# 程序员能干到多少岁? #
8554次浏览 115人参与
# 你认为小厂实习有用吗? #
118029次浏览 679人参与
# 互联网公司评价 #
485579次浏览 4109人参与
# 应届生进小公司有什么影响吗 #
118274次浏览 1159人参与
