您现在的位置是:首页 > 编程 > 

复写零问题

2025-07-25 22:40:01
复写零问题 一·题目:leetcode原题链接:. - 力扣(LeetCode) 二·思路汇总:思路:此题要求原数组修改故,放弃两个指针位于不同数组操作,而正向两个指针操作会覆盖数据,故选择反向两个指针操作解决此问题但是需要让我们的cur指向操作后数组的最后一个位置的值处(如示例一就是指向4)而dest指向最后一个位置(此处有个特殊情况就是当它复写后出现一个零在末尾,而另一个0在数组外,此时des

复写零问题

一·题目:

leetcode原题链接:. - 力扣(LeetCode)

二·思路汇总:

思路:此题要求原数组修改故,放弃两个指针位于不同数组操作,而正向两个指针操作会覆盖数据,故选择反向两个指针操作解决此问题

但是需要让我们的cur指向操作后数组的最后一个位置的值处(如示例一就是指向4)而dest指向最后一个位置(此处有个特殊情况就是当

它复写后出现一个零在末尾,而另一个0在数组外,此时dest指向的n位置,可以最后在操作)最后反向遍历即可

三·解答代码:代码语言:javascript代码运行次数:0运行复制
class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
          int cur=0,dest=-1,n=arr.size();
          while(cur<n){//考虑到为1,2,的情况可以等于n-1;
            if(arr[cur]){
                dest++;
            }
            else{
                dest+=2;
            }
            cur++;//此处cur++;到最后cur就在预期的下一个位置,故之后--一下
            if(dest>=n-1){
                break;
            }
          }
          if(dest==n){
            dest-=2;
            arr[n-1]=0;//处理dest越界,如:[8,4,5,0,0,0,0,7] 变为 [8,4,5,0,0,0,0,0]的情况
            cur--;
          }
          //到此处cur就变为我们预期位置的下一个,综合越界和不越界--一下;
          cur--;
          while(cur>=0){
           
              if(arr[cur]){
                 arr[dest--]=arr[cur--];
              }
              else{
              
                 arr[dest--]=0;
                arr[dest--]=0;
                cur--;
              }
          }
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-2,如有侵权请联系 cloudcommunity@tencent 删除数据数组指针int遍历

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1131983.html

相关标签:无
上传时间: 2025-07-18 19:49:37
留言与评论(共有 11 条评论)
本站网友 redhat下载
10分钟前 发表
n=arr.size(); while(cur<n){//考虑到为1
本站网友 桦树茸的功效
1分钟前 发表
void duplicateZeros(vector<int>& arr) { int cur=0
本站网友 北京本家润园
21分钟前 发表
复写零问题 一·题目:leetcode原题链接:. - 力扣(LeetCode) 二·思路汇总:思路:此题要求原数组修改故
本站网友 蒙药
8分钟前 发表
dest=-1
本站网友 19e数字便民
18分钟前 发表
而另一个0在数组外
本站网友 金昌小区
16分钟前 发表
0
本站网友 甘茂
25分钟前 发表
0
本站网友 倪净
4分钟前 发表
综合越界和不越界--一下; cur--; while(cur>=0){ if(arr[cur]){ arr[dest--]=arr[cur--]; } else{ arr[dest--]=0; arr[dest--]=0; cur--; } } } };本文参与 腾讯云自媒体同步曝光计划
本站网友 铁东二手房
18分钟前 发表
0
本站网友 曦城花语
6分钟前 发表
复写零问题 一·题目:leetcode原题链接:. - 力扣(LeetCode) 二·思路汇总:思路:此题要求原数组修改故