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

leetcode01——27. 移除元素(双指针)、977. 有序数组的平方(双指针)、209. 长度最小的子数组(双指针/滑动窗口)

27. 移除元素

/**
定义快慢指针,均从0开始,fast向后移动,遇到不为删除值的就停下,将值赋值给slow,slow++
遇到等于目标值就直接跳过,不等于目标值就赋值,这样就能 过滤掉(也就是删除掉)目标值*/
class Solution {public int removeElement(int[] nums, int val) {int fast = 0;int slow = 0;for (fast = 0; fast < nums.length; fast++) {if (nums[fast] != val) {nums[slow] = nums[fast];slow++;}}return slow;}
}

977. 有序数组的平方

/**
双指针因为非递减排序的数组中有负数,因此不能直接就平方然后排序但是平方后数组两端的数据一定是最大的(如:-5,1,3,6)因此定义左右两个指针,判断平方后的数的大小,将大的放在新数组的末尾*/
class Solution {public int[] sortedSquares(int[] nums) {int left = 0;int len = nums.length;int right = len-1;int[] newNums = new int[len];// 类似二分查找的思路while (left <= right) {if (nums[left]*nums[left] < nums[right]*nums[right]) {newNums[len-1] = nums[right]*nums[right];right--;} else {newNums[len-1] = nums[left]*nums[left];left++;}len--;}return newNums;}
}

209. 长度最小的子数组

class Solution {public int minSubArrayLen(int target, int[] nums) {int res = Integer.MAX_VALUE;int sum = 0; //滑动窗口数值之和int i = 0; //滑动窗口的起始位置int subLength = 0; //滑动窗口的长度for (int j = 0; j < nums.length; j++) {sum += nums[j];// 注意这里使用while,每次更新 i(起始位置),并不断比较子序列是否符合条件while (sum >= target) {subLength = (j - i + 1); //取子序列长度res = res < subLength ? res : subLength;sum -= nums[i++]; //这里体现出滑动窗口的精髓之处,不断变更i(子序列的起始位置)}}// 如果res0没有被赋值的话,就返回0,说明没有符合条件的子序列return res == Integer.MAX_VALUE ? 0 : res;}
}

参考内容:代码随想录

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode刷题day17|二叉树Part05(654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树)
  • MySQL:索引02——使用索引
  • React 嵌套类名样式不生效
  • 基于python+django+vue的家居全屋定制系统
  • Vue3.5+ 响应式 Props 解构
  • PDF扫描版文字识别OCR
  • C/C++实现植物大战僵尸(PVZ)(打地鼠版)
  • Android使用LiquidFun物理引擎实现果冻碰撞效果
  • 计算机网络-第二章【新】
  • 如何提高网站搜索排名
  • 编程基础:函数栈帧的创建和销毁
  • YOLOv8 人体姿态估计动作识别关键点检测(代码+教程)
  • 【我的 PWN 学习手札】Unsortedbin Attack
  • Vue2时间轴组件(TimeLine/分页、自动顺序播放、暂停、换肤功能、时间选择,鼠标快速滑动)
  • Sa-Token的v1.39.0自定义鉴权注解怎么玩
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【知识碎片】第三方登录弹窗效果
  • C++入门教程(10):for 语句
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Javascript基础之Array数组API
  • java第三方包学习之lombok
  • Python打包系统简单入门
  • React系列之 Redux 架构模式
  • SAP云平台里Global Account和Sub Account的关系
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • - 概述 - 《设计模式(极简c++版)》
  • 欢迎参加第二届中国游戏开发者大会
  • 记录一下第一次使用npm
  • 马上搞懂 GeoJSON
  • 面试遇到的一些题
  • 全栈开发——Linux
  • 学习HTTP相关知识笔记
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • #07【面试问题整理】嵌入式软件工程师
  • #QT(TCP网络编程-服务端)
  • ( 10 )MySQL中的外键
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)nginx 安装、启停
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (分布式缓存)Redis持久化
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)u-boot-nand.bin的下载
  • (原創) 未来三学期想要修的课 (日記)
  • (转载)Google Chrome调试JS
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • **CI中自动类加载的用法总结
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 8 跨平台高性能边缘采集网关
  • .Net core 6.0 升8.0