12
返回列表 发新帖
楼主: akdhfikbk
跳转到指定楼层
上一主题 下一主题
收起左侧

[数组] Moving zeros有思路可代码突然写不出来

🔗
337845818 2019-9-27 02:37:22 | 只看该作者
全局:
akdhfikbk 发表于 2019-9-27 02:03
哈因为我现在在钻牛角尖,就像按照目前的写法写通
然后再想别的

你交换的逻辑我看不懂其实所以很难在你写的代码上有任何帮助
回复

使用道具 举报

🔗
 楼主| akdhfikbk 2019-9-28 03:50:04 | 只看该作者
全局:
337845818 发表于 2019-9-27 02:37
你交换的逻辑我看不懂其实所以很难在你写的代码上有任何帮助

交换的逻辑就是:
  1. int tmp = nums[slow];
  2. nums[slow] = nums[fast];
  3. nums[fast] = tmp;
  4. slow++;
  5. fast++;
复制代码
回复

使用道具 举报

🔗
 楼主| akdhfikbk 2019-9-28 05:25:22 | 只看该作者
全局:
337845818 发表于 2019-9-27 02:37
你交换的逻辑我看不懂其实所以很难在你写的代码上有任何帮助

哦是的,我懂你意思了
我的第一句话 把slow换到fast的位置
思路的确有问题,我以为slow一直不走,现在想明白了,slow和fast一起走,然后fast遇到0之后,slow不走,fast走
棒!

评分

参与人数 1大米 +1 收起 理由
337845818 + 1 棒!

查看全部评分

回复

使用道具 举报

🔗
cszj 2019-10-1 11:07:28 | 只看该作者
全局:
本帖最后由 cszj 于 2019-10-1 11:08 编辑

可以跳过一下前面的数据
  1. void moveZones(vector<int> &va) {
  2.         int len = va.size();
  3.         int f0 = 0;
  4.         while(va[f0] != 0) f0++;
  5.         // now f0 is pointer first 0
  6.         for(int i=f0+1; i<len; i++) {
  7.                 if(va != 0) {
  8.                         swap(va, va[f0++]);
  9.                 }
  10.         }
  11.         return ;
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表