Leetcode Hot 100刷题记录 -Day3(双指针)

移动零

问题描述:

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

示例 1:

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

示例 2:

输入: nums = [0]
输出: [0]
//解法一:
class Solution {public int[] moveZeroes(int[] nums){int n = nums.length;int j =0; //指针j为指向已经处理好的序列尾部//指针i指向未处理好的序列头部for (int i = 0;i < n; i++){if(nums[i] != 0){int temp = nums[i];nums[i] = nums[j];nums[j] = temp;j++;}}return nums;}
}//解法二:
class Solution {public int[] moveZeroes(int[] nums){int n = nums.length;int j =0;for (int i = 0;i < n; i++){if(nums[i] != 0){nums[j] = nums[i];//指针j指向为0的数,直接将其变为非0的数j++;}}//第一次循环将前面所有不为0的数全部移动到前面,且指针j最后指向的是已经处理好的序列尾部//所以指针i和指针j之间的数为0的个数for (int i = j; i<n; i++){nums[i] = 0;}return nums;}
}
//带有输入输出:
//解法一:
public class hot4_moveZeroes {public int[] moveZeroes(int[] nums){int n = nums.length;int j =0;for (int i = 0;i < n; i++){if(nums[i] != 0){int temp = nums[i];nums[i] = nums[j];nums[j] = temp;j++;}}return nums;}public static  void main(String[] args) {hot4_moveZeroes hot4MoveZeroes = new hot4_moveZeroes();int[] nums = {0,1,0,3,12};System.out.println("输入: = " + Arrays.toString(nums));int[] result = hot4MoveZeroes.moveZeroes(nums);System.out.println("输出:" + Arrays.toString(result));}
}//解法二:
public class hot4_moveZeroes {public int[] moveZeroes(int[] nums){int n = nums.length;int j =0;for (int i = 0;i < n; i++){if(nums[i] != 0){nums[j] = nums[i];j++;}}for (int i = j; i<n; i++){nums[i] = 0;}return nums;}public static  void main(String[] args) {hot4_moveZeroes hot4MoveZeroes = new hot4_moveZeroes();int[] nums = {0,1,0,3,12};System.out.println("输入: = " + Arrays.toString(nums));int[] result = hot4MoveZeroes.moveZeroes(nums);System.out.println("输出:" + Arrays.toString(result));}
}

知识点总结:

  • 方法二的思想

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt杂项功能实现

本文介绍Qt杂项功能实现。 1.隐藏鼠标指针 1)整个应用程序都不显示鼠标指针 可在“QApplication a(argc, argv);”之后添加&#xff1a; QApplication::setOverrideCursor(Qt::BlankCursor); 这在带触摸屏的应用中非常有用。 2)某个窗口不显示鼠标指针 可在窗口的构造函…

JVM垃圾回收算法:标记-清除算法 、复制算法、 标记-整理算法、 分代收集算法

文章目录 引言I 标记回收算法(Mark-Sweep)算法不足II 复制算法(Copying)III 标记整理算法(Mark-Compact)IV 分代收集(以上三种算法的集合体)内存划分新生代算法:Minor GC老年代算法V 查看JVM堆分配引言 垃圾回收(Garbage Collection,GC) Java支持内存动态分配、…

Flask+LayUI开发手记(六):树型表格的增删改查

树型表格的增删改查功能与数据表格的是完全一致&#xff0c;就是调用layui-form表单组件实现数据输入再提交&#xff0c;比较大的区别是树型节点的编辑&#xff0c;都需要有上级节点的输入&#xff0c;而这个上级节点的展示&#xff0c;必须是以树型方式展示出来。当然&#xf…

【大数据】Kaggle:数据科学家的竞技场与学习平台

文章目录 一、引言二、Kaggle是什么&#xff1f;Kaggle的核心特点包括&#xff1a; 三、Kaggle的用途四、如何使用Kaggle1. 注册账号2. 探索竞赛3. 下载数据集4. 使用Kernels5. 参与论坛讨论 五、Kaggle的高级功能1. Kaggle Kernels2. 数据集3. 论坛 六、Kaggle在教育和企业中的…

语音控制开关的语音识别ic芯片方案

语音控制开关是一种基于语音识别技术的设备&#xff0c;它通过内置的语音识别芯片&#xff0c;将用户的语音指令转化为电信号&#xff0c;从而实现对设备的控制。例如在智能家居设备上的应用&#xff0c;通常需要连接到家庭的Wi-Fi网络上&#xff0c;以便与智能手机或智能音箱等…

python os获取当前git目录的git用户

要获取当前目录下的 Git 用户配置&#xff08;即用户名称和电子邮件&#xff09;&#xff0c;你可以结合操作系统命令和 git 命令来完成这一任务。以下是使用 Python 的 os 模块和 subprocess 模块来获取当前 Git 目录的用户配置的示例代码&#xff1a; 使用 Python 脚本&…

golang RSA 解密前端jsencrypt发送的数据时异常 crypto/rsa: decryption error 解决方法

golang中 RSA解密前端&#xff08;jsencrypt&#xff09;发来的密文后出现 "crypto/rsa: decryption error" &#xff0c; 这个问题首先需要确认你的私匙和公匙是否匹配&#xff0c; 如果匹配 那检查入参数据类型&#xff0c; 前端发送来的rsa加密后的数据一般都是…

bbr 随机 phase 的麻烦与 inflight 守恒算法的动机

bbr 有个要点&#xff0c;要把 probebw 的 phase 错开&#xff1a; static void bbr_reset_probe_bw_mode(struct sock *sk) {struct bbr *bbr inet_csk_ca(sk);bbr->mode BBR_PROBE_BW;bbr->cycle_idx CYCLE_LEN - 1 - prandom_u32_max(bbr_cycle_rand);bbr_advance…

【Java设计模式】集合管道模式:简化数据操作

文章目录 【Java设计模式】集合管道模式&#xff1a;简化数据操作一、概述二、集合管道设计模式的意图三、集合管道模式的详细解释及实际示例四、Java中集合管道模式的编程示例五、何时在Java中使用集合管道模式六、集合管道模式在Java中的实际应用七、集合管道模式的优点和权衡…

【封装自己的库】

封装自己的库 课前准备 工具 编辑器 VSCode浏览器 Chorme 前置知识 Js基本知识 课堂主题 一、定义函数返还JQ对象 二、ready方法和原生节点处理 三、选择器器封装 四、封装JQ的eq方法 五、封装JQ的click方法 六、jQ中的链式操作 七、封装JQ的css方法 八、cssHooks扩…

Java项目:基于SpringBoot+mysql在线拍卖系统(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SSM框架mysql在线拍卖系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能齐全、…

Java 面试题:HTTP版本演变--xunznux

文章目录 HTTP版本演变HTTP/0.9HTTP/1.0HTTP/1.1新引入&#xff1a;问题&#xff1a;长连接是什么&#xff1a;管道网络传输&#xff1a;队头阻塞是什么&#xff1f;解决http队头阻塞的方法&#xff1a;HTTP1.1常见性能问题为解决HTTP1.1性能问题而提出的常见优化手段 HTTP/21、…

【河北航空-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

RS485与USB3.1电路

USB2.0最高也就480M&#xff0c;而USB3.0轻松到达5Gbps&#xff1a; DTU远程控制&#xff1a; DTU&#xff08;数据传输单元&#xff09;通常用于将数据从现场设备传输到远程服务器&#xff0c;常用于物联网、工业控制、远程监控等场景。它可以通过GPRS/4G、Wi-Fi、以太网等方…

Python网络爬虫模拟登录与验证解析

内容导读 使用Selenium模拟登录 使用Cookies登录网站 模拟表单登录网站 爬虫识别简单的验证码 实例解析 一、使用Selenium模拟登录 1、为什么要模拟登录 在互联网上存在大量需要登录才能访问的网站&#xff0c;要爬取这些网站&#xff0c;就需要学习爬虫的模拟登录。对…

TC-RAG: Turing-Complete RAG--图灵完备的检索增强

摘要&#xff1a; 在提升领域特定的大语言模型&#xff08;LLMs&#xff09;的方法中&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术作为一种有前景的解决方案&#xff0c;可以缓解诸如幻觉、知识过时以及在高度专业化查询中专业知识有限等问题。然而&#xff0c;现…

WPF- vs中的WPF应用项目模板 如何自己实现

读书笔记 1. 单个 c#文件的 空白window应用程序 (只展示了一个button按钮) 2.C#文件 和xml文件 的空白window程序 .xml文件作为程序的资源 (只一个button按钮) 3. xmal和c#共同编译 形如使用VS 创建WPF应用项目模板 1.新建一个wpf空白项目 ,添加一个主c#文件 和xaml文件(属…

【C++ Primer Plus习题】7.2

问题: 解答: #include <iostream> using namespace std;#define MAX 10int input(float* grade, int len) {int i 0;for (i 0; i < len; i){cout << "请输入第" << i 1 << "个高尔夫成绩(按0结束):";cin >> grade[i]…

【二叉树进阶】--- 前中后序遍历非递归

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey 本篇博客我们将来了解有关二叉树前中后序遍历的非递归版本。 &#x1f3e0; 前序遍历 要迭代非递归实现二叉树的前序遍历&#xff0c;首先还…

【Android】MotionLayout实现动画效果

【Android】MotionLayout实现开场动画 在移动应用开发中&#xff0c;动画不仅仅是美化界面的工具&#xff0c;它更是提升用户体验的关键手段。Android 平台一直以来都提供了丰富的动画框架&#xff0c;但随着应用复杂性的增加&#xff0c;开发者对动画的需求也变得更加复杂和多…