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

embedded/2024/12/23 7:00:55/

27. 移除元素

java">/**
定义快慢指针,均从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. 有序数组的平方

java">/**
双指针因为非递减排序的数组中有负数,因此不能直接就平方然后排序但是平方后数组两端的数据一定是最大的(如:-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. 长度最小的子数组

java">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;}
}

参考内容:代码随想录


http://www.ppmy.cn/embedded/112076.html

相关文章

重头开始嵌入式第四十一天(数据结构 树 哈希表)

树 目录 树 树的定义 二叉树&#xff0c;binary tree 特殊的二叉树 二叉树的特性 层序遍历 1.创建树CreateBiTree(); 2.销毁树DestroyBiTree(); 3.前序遍历void PreOrderTraverse(); 4.中序遍历void InOrderTraverse(BiTree T); 5.后序遍历void PostOrderTraverse(…

如何在Flask中实现用户认证

在Flask中实现用户认证通常涉及几个关键步骤&#xff1a;使用第三方库&#xff08;如Flask-Login或Flask-Security&#xff09;、用户数据管理、登录表单处理、会话管理以及保护需要认证的路由。以下是使用Flask-Login库实现用户认证的基本步骤&#xff1a; 1. 安装Flask-Logi…

Spring Boot集成Mockito快速入门Demo

1.什么是Mockito&#xff1f; Mockito是一个模拟测试框架&#xff0c;可以让你用优雅&#xff0c;简洁的接口写出漂亮的单元测试。Mockito可以让单元测试易于可读&#xff0c;产生简洁的校验错误。 使用场景 提前创建测试&#xff0c;TDD&#xff08;测试驱动开发&#xff0…

【LeetCode 算法笔记】155. 最小栈

目录 问题描述单个栈实现双栈实现不开辟额外空间 问题描述 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop()…

OpenHarmony鸿蒙( Beta5.0)智能加湿器开发详解

鸿蒙开发往期必看&#xff1a; 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…

Vue3 Day1Day2-Vue3优势ref、reactive函数

Day1 1.1 Vue3的优势 更容易维护 组合式API 更好的TypeScript支持 更快的速度 重写diff算法 模板编译优化 更高效的组件初始化 更小的体积 良好的TreeShaking 按需引入 更优的数据响应式 Proxy setup中不存在this&#xff0c;如果想直接获取节点&#xff0c;就得放在o…

Grafana面板-linux主机详情(使用标签过滤主机监控)

1. 采集器添加labels标签区分业务项目 targets添加labels &#xff08;模板中使用的project标签&#xff09; … targets: [‘xxxx:9100’] labels: project: app2targets: [‘xxxx:9100’] labels: project: app1 … 2. grafana面板套用 21902 模板 演示

力扣最热一百题——螺旋矩阵

目录 题目链接&#xff1a;54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;模拟 1. 边界初始化 2. 循环遍历矩阵 3. 从左到右遍历上边界 4. 从上到下遍历右边界 5. 从右到左遍历下边界 6. 从下到上遍历左边…