Leetcode双指针刷题(一)

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

 public int removeElement(int[] nums, int val) {int slow=0;for(int fast=0;fast<nums.length;fast++){if(nums[fast]!=val){nums[slow]=nums[fast];slow++;}}return slow;}

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

 public void reverseString(char[] s) {int slow=0,fast=s.length-1;while (slow<=fast){char temp=s[slow];s[slow]=s[fast];s[fast]=temp;slow++;fast++;}}

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例 1:

输入:s = "abcdefg", k = 2
输出:"bacdfeg"
 public String reverseStr(String s, int k) {char[] ch = s.toCharArray();// 1. 每隔 2k 个字符的前 k 个字符进行反转for (int i = 0; i< ch.length; i += 2 * k) {// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符if (i + k <= ch.length) {reverse(ch, i, i + k -1);continue;}// 3. 剩余字符少于 k 个,则将剩余字符全部反转reverse(ch, i, ch.length - 1);}return  new String(ch);}// 定义翻转函数public void reverse(char[] ch, int i, int j) {for (; i < j; i++, j--) {char temp  = ch[i];ch[i] = ch[j];ch[j] = temp;}}

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。
 public int removeDuplicates(int[] nums) {int slow=0;for(int fast=0;fast<nums.length;fast++){if(nums[fast]!=nums[slow]){slow++;nums[slow]=nums[fast];}}return slow+1;}

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

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

相关文章

播放相关知识-持续更新

一&#xff1a;基础知识&#xff1a; 1.编码方式&#xff1a; H264&#xff1a; H265&#xff1a; AV1&#xff1a; 1.多码流&#xff0c;为什么现在视频播放有这么多的码流&#xff08;100、200、300、400、500、600、800、1020等等&#xff09; 优点&#xff1a;用户不同的…

大模型解决方案:具体业务场景下的智能表单填充(附代码)

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型…

在组件页面刷新为什么触发不了组件的生命周期销毁钩子

当在前端开发中遇到组件页面刷新时&#xff0c;无法触发组件生命周期的销毁钩子&#xff08;如 Vue 的 beforeDestroy/destroyed 或 React 的 componentWillUnmount&#xff09;&#xff0c;通常有以下几种情况或原因&#xff1a; 页面刷新的本质&#xff1a;当浏览器页面执行刷…

JS -正则表达式

正则表达式 关于正则表达式&#xff0c;其实我写过几篇了&#xff0c;但是真正的正则表达式其实主要用于定义一些字符串的规则&#xff0c;计算机根据给出的正则表达式&#xff0c;来检查一个字符串是否符合规则。 我们来看一下&#xff0c;在JS中如何创建正则表达式对象。 语…

网络不更新,LOSS正常输出。

据别的文章说&#xff0c;学习率过高或者adam算法没加入eps参数也可能导致模型输出nan. 这个可以一开始就加上试试。先判断loss是否正常&#xff0c;再使用判断梯度是否正常。出现NAN。 loss.backward()for name, parms in model.named_parameters():if parms.grad is None or…

第67天:APP攻防-Frida反证书抓包移动安全系统资产提取评估扫描

思维导图 案例一&#xff1a;内在-资产提取-AppinfoScanne AppinfoScanner 一款适用于以 HW 行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具&#xff0c;可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态 WEB …

【禅道客户案例】小反馈,大杠杆!银丰新融「反馈管理」优秀实践

企业介绍 北京银丰新融科技开发有限公司&#xff08;简称&#xff1a;银丰新融&#xff09;成立于2000 年&#xff0c;自创立以来一贯专注于金融监管、风险管控等领域的信息系统建设&#xff0c;拥有目前国内金融风险领域规模庞大的信息技术服务团队。 银丰新融业务范围覆盖了…

VUE3 ref,props,生命周期

1.--ref属性 1.1代码 1.1.1子表 <template><div class"person"><h1>中国</h1><h2 ref"title2">北京</h2><h3>尚硅谷</h3><button click"showLog">点我输出h2这个元素</button>&l…

JavaScript注释:单行注释和多行注释详解

为了提高代码的可读性&#xff0c;JS与CSS一样&#xff0c;也提供了注释功能。JS中的注释主要有两种&#xff0c;分别是单行注释和多行注释。 在编程的世界里&#xff0c;注释是那些默默无闻的英雄&#xff0c;它们静静地站在代码的背后&#xff0c;为后来的维护者、为未来的自…

到底什么是爬虫

1. 引言 在数据驱动的世界里&#xff0c;网络爬虫&#xff08;Web Crawling&#xff09;技术扮演着获取和处理网上数据的关键角色。无论是为了数据分析、机器学习项目的数据集构建还是简单地监测网页变化&#xff0c;学习如何创建一个基本的网页爬虫可以大大提升你的工作效率和…

Vue页面生成导出PDF文件

第一种&#xff1a; 使用浏览器自带打印方法window.print(); 也可使用print-js插件&#xff08;原理相同&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>printDemo</title> </…

【Vue】常见的七大属性(描述+案例)

一、前言 最近&#xff0c;因为项目需要自己就去学习了一下Vue的相关知识&#xff0c;自己花了几天&#xff0c;结合官方文档和相应的视频学习了一下Vue,了解了Vue大概的一些属性&#xff0c;方法&#xff0c;特点等。接下来博主会将自己学习的相关内容通过博客的形式进行记录…

flutter类的细节

title: flutter类的细节(hexo发表blog的初尝试) abbrlink: 9bcefa22 date: 2024-04-22 00:26:25 tags: description: flutter里抽象类的解释 cover: “http://anime-haven.net/lainceleyesdh.jpg” {% p center logo large, Flutter近日学习所遇到的问题 %} {% p center h3, 是…

python教程(5更新中)

常用内建模块 Python之所以自称“batteries included”&#xff0c;就是因为内置了许多非常有用的模块&#xff0c;无需额外安装和配置&#xff0c;即可直接使用。 本章将介绍一些常用的内建模块。 datetime datetime是Python处理日期和时间的标准库。 获取当前日期和时间 …

Linux蓝牙驱动模拟HID设备(把Linux系统模拟成蓝牙鼠标和蓝牙键盘)

by fanxiushu 2024-04-24 转载或引用请注明原始作者。 在经过windows的蓝牙驱动开发模拟成HID设备的大风大浪之后&#xff0c; 现在回到linux下实现相同功能&#xff0c;简直就是如小孩嬉闹一样的轻松。 但无论如何&#xff0c;作为模拟蓝牙HID设备的windows&#xff0c;linux一…

【学习】​CSMM和CMMI的关系你了解吗

CMMI和CSMM都是评估和提升软件组织能力成熟度的模型&#xff0c;但它们在起源、应用范围、模型结构和实施目的等方面存在一些区别。在当今竞争激烈的软件市场中&#xff0c;提升软件能力成为了多数组织追求成功的关键因素。而选择适合的体系标准能够助力企业发展得更加迅速。作…

服务器资源监控告警处理

[] 服务器资源监控告警处理方案总结 服务器监控指标 服务器日常监控巡检时&#xff0c;总会遇到不同服务器的不同告警&#xff0c;使用不同的监控工具&#xff0c;监控的指标有所不同&#xff0c;但最基础的服务器资源指标&#xff0c;基本都支持&#xff0c;比如zabbix &a…

智慧公厕案例-江西省九江天花井森林公园公厕

背景介绍&#xff1a; 江西某市森林公园是江西省的一处重要旅游景点&#xff0c;每年吸引了大量游客前来游览。然而&#xff0c;由于游客众多&#xff0c;公园内的卫生设施相对滞后&#xff0c;公厕的清洁度和管理效率成为了游客诟病的重要问题。 建设背景&#xff1a; 公园内…

软设之I/O数据传输控制方式

数据传输的方式 1.程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单&#xff0c;硬件开销小&#xff0c;到I/O能力不高&#xff0c;严重影响Cpu的利用率。 2.程序中断方式:与程序控制方式相比&#xff0c;中断方式因为CPU无需等待而提高了传输请求的响应速度。…

c++统计函数耗时

原型&#xff1a;BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); 作用&#xff1a;该函数是操作系统的性能统计分辨率&#xff0c;也就是每秒钟统计多少次的意思&#xff0c;返回硬件支持的高精度计数器的频率。返回非零&#xff0c;硬件支持高精度计数器&…