当前位置: 首页 > article >正文

【Leetcode-移动零】利用将非零元素移动至数组前解决移动零问题(剪枝优化)

题目描述

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例1

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例2

输入: nums = [0]
输出: [0]

解题思路 (时间复杂度O(n))

#include <stdlib.h>

void moveZeroes(int* nums, int numsSize) {
    int insertPos = 0;  // 使用insertPos变量记录非零元素应该插入的位置。

    for (int i = 0; i < numsSize; i++) { // 遍历数组,将非零元素交换到insertPos位置,并将insertPos递增。
        if (nums[i] != 0) {

            if (i != insertPos) { // 使用if (i != insertPos)条件判断,避免不必要的交换操作。
                int temp = nums[i];
                nums[i] = nums[insertPos];
                nums[insertPos] = temp;
            }
            insertPos++;
        }
    }
}

执行结果

在这里插入图片描述


http://www.kler.cn/a/488845.html

相关文章:

  • trf 4.10安装与使用-生信工具42
  • 计算机网络 (31)运输层协议概念
  • 六、Angular 发送请求/ HttpClient 模块
  • 麦田物语学习笔记:背包物品选择高亮显示和动画
  • PLC实现HTTP协议JSON格式数据上报对接的参数配置说明
  • 【SpringAOP】Spring AOP 底层逻辑:切点表达式与原理简明阐述
  • TypeScript语言的网络编程
  • Linux第一个系统程序---进度条
  • 详细分析 Git 分支重命名与同步操作
  • Harmony OS开发-ArkUI框架速成八之交叉轴和自适应
  • 【Qt】控件概述和QWidget核心属性1(enabled、geometry、windowTitle、windowIcon、QRC机制)
  • 全文搜索-搜索权限,非侵入文档同步,权限同步 ,扩展字段
  • 深度解析如何使用Linux中的git操作
  • Python 教程 - 基本语句
  • 【Golang 面试题】每日 3 题(二十四)
  • LeetCode 3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口
  • 机器学习05-最小二乘法VS梯度求解
  • 单片机实现模式转换
  • 日语IT用语笔记
  • c++入门之 命名空间与输入输出
  • 力扣-数组-121 买卖股票的最佳时机
  • qml SpringAnimation详解
  • 【AI-22】深度学习框架中的神经网络2
  • 关于Java代理模式的面试题目及其答案
  • C++语言的学习路线
  • Kafka的Partition故障恢复机制与HW一致性保障-Epoch更新机制详解