首页 > 其他分享 >283.移动零

283.移动零

时间:2024-03-06 11:12:27浏览次数:19  
标签:cnt slow nums int 复杂度 fast 283 移动

刷题笔记+-+283.移动零+be5bc16d-9504-40d6-b23e-6a2648a4d21a

  • 需要复习内容:快慢指针法
  • ☐ 记住时间和空间复杂度
  • [ ]
  • [ ]
  • 待办:
  • ☐ 查一下时间复杂度
  • ☐ 查一下空间复杂度
  • [ ]

解法一:模拟

遍历一遍将非零元素前移,使用k控制下标

并且遍历过程中将零元素的个数cnt找出来;

然后再for一遍将数组的后cnt个元素赋值0;完成;

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int cnt=0;
        int k=0;
        for(int i=0;i<nums.size();i++){
            if(nums[i]!=0){
                nums[k++]=nums[i];
            }
        }
        for(int i=k-1;k<nums.size();k++){
            nums[k]=0;
        }
    }
};

解法二:快慢指针

slow去寻找为0的位置,fast负责for遍历数组找不为0的地方,前提是slow<fast

然后双方都找到后进行swap

解决。

class Solution {
    public void moveZeroes(int[] nums) {
        int slow=0;
        int fast=0;
        for(fast=0;fast<nums.length;fast++){
            while(nums[slow]!=0&&slow<fast){
                slow++;
            }
            if(nums[fast]!=0){
                int tmp=nums[fast];
                nums[fast]=nums[slow];
                nums[slow]=tmp;
            }
        }
    }
}

标签:cnt,slow,nums,int,复杂度,fast,283,移动
From: https://www.cnblogs.com/nilbook/p/18056097

相关文章

  • Vite 2.0 + Vue3 + Ts + Vant3移动端项目
    highlight:androidstudioVite2.0搭建Vue3移动端项目一.涉及技术点vitevue3tsroutervuexaxiosvant3移动端适配请求代理二.步骤vite+ts+vue3只需要一行命令npminit@vitejs/appmy-vue-app--templatevue-ts初始化项目npminstallnpmrundev**......
  • 【教程】移动应用安全加固技术解析
    摘要本文探讨了移动应用安全加固的重要性以及相关技术手段,着重介绍了iOS安全加固技术的源码加固、运行环境加固和业务场景加固等方面。此外,还分享了一些常见的加固混淆方法,为移动应用开发者提供了全面的安全加固方案。 引言在移动应用快速发展的今天,安全问题成为开发者和用......
  • 解决WPF下popup不随着window一起移动的问题
    解决WPF下popup不随着window一起移动的问题_小戴BOTAOY演示博客(yii666.com)///<summary>///Popup帮助类,解决Popup设置StayOpen="True"时,移动窗体或者改变窗体大小时,Popup不随窗体移动的问题///</summary>publicclassPopopHelper{publicstaticDependency......
  • 移动端电子签名
    一.React:使用手写签名插件:react-canvas-draw和react-signature-canvasnpminstallreact-canvas-draw--saveimportCanvasDrawfrom"react-canvas-draw";3、使用组件signCanvas=React.createRef();设置签名组件的属性<CanvasDrawref={this.signCanvas......
  • C++填坑系列——万能引用+移动语义+完美转发
    模板编程中的万能引用、移动语义、完美转发万能引用:T&&,辅助模板编程,这样左值和右值的参数都可以接收;移动语义:std::move,转换为右值,也可结合移动构造函数和移动赋值使用;完美转发:std::forward,可以保留参数的左值和右值属性,因为后续使用该参数可能还需要这个属性;万能引用万能引......
  • nrf52832蓝牙开发踩过的坑-京鸿通信科技-15507589165
    转自:http://www.manongjc.com/detail/26-htjapkxksqidwuo.html本文章向大家介绍nrf52832蓝牙开发踩过的坑,主要包括nrf52832蓝牙开发踩过的坑使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。接触nrf52832芯片已经有一段时间了......
  • 9-1. 实现移动设备屏幕操控
    添加虚拟手柄如上图所示,绘制虚拟手柄,包括左侧操作杆和右侧NESW键给左侧操作杆添加On-ScreenStick给右侧按钮添加On-ScreenButton因为我们使用的是新输入系统,所以这些虚拟按键就能直接使用了PC版不显示虚拟手柄使用UNITY_STANDALONE宏,这个宏只会在PC平台上生效,......
  • 回放移动旋转
     1、首先是设置一个枚举 分别为 录制  暂停  回放  2、先设置一个常量  long作为时间 录制的最长时间 然后再设置里面把时间修改为0.01 相当于1帧100次把应该 3、设置两个存储位置和旋转的数组 做一个记录4、设置两个Bool他们分别用来判断该......
  • 免费集成-下载移动应用程序小工具
    推荐一个好用的、可以免费集成到网站的小部件。以下是具体内容。通过免费集成提高下载率。免费的网站小部件,您只需要简单的复制粘贴即可集成到您的网站中,以此来提高您的网站开发和下载效率。示例:为什么选择这个的插件:下载率提高了20%:我们的插件改变了游戏规则,带来了实实在......
  • ABC283E (dp思想)
    难度1这题看到一点思路也没有,但是看到最小操作数想到二分,dp和贪心,二分答案的check显然不会,贪心不会。发现对于一行,前面的\(i-2\)是不会影响的,这一行也不会影响后面的\(i+2\)行,所以是dp。考虑如何设计状态因为\(i-1\)和\(i+1\)行都会影响,所以设计出来一个dp[i][0/1][0/1][0/1]的东......