package array;import java.util.Arrays;/*** @program: project* @description: 快慢指针* @author: 小北丶* @create: 2022-02-22 08:13**/public class 快慢指针 {//27. 移除元素 简单//给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。//不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。public int removeElement(int[] nums, int val) {int n = nums.length;int right = n - 1;for (int i = n - 1; i >= 0; i--) {if (nums[i] == val) {nums[i] = nums[right];right -= 1;}}return right + 1;}//26. 删除有序数组中的重复项 简单//给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。//由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么nums的前 k 个元素应该保存最终结果。//将最终结果插入nums 的前 k 个位置后返回 k 。//不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。public int removeDuplicates(int[] nums) {int n = nums.length;int j = 0;for (int i = 0; i < n; i++) {if (nums[i] != nums[j]) {nums[++j] = nums[i];}}return j + 1;}//844. 比较含退格的字符串 简单//给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。//注意:如果对空文本输入退格字符,文本继续为空。//思路  1.将字符串转化为字符数组,方便使用快慢指针解决问题//      2.左指针指向有效字符位置的下一位,右指针指向遍历位置,左指针前进找到一位有效字符,左指针后退代表进行退格操作,右指针只会前进,依次遍历目标字符串//      3.右指针遇到有效字符,替换左指针所在位置字符,左指针与有指针向前一位,//      4.右指针遇到#退格符,左指针后退一位,右指针前进一位,注意如果左指针为0,则不能后退,//      5.俩组字符串遍历完成后,截取有效字符串即前左指针位加一的位数,然后进行比较.public boolean backspaceCompare(String s, String t) {return getEffectiveStr(s).equals(getEffectiveStr(t));}public static String getEffectiveStr(String s) {char[] chars = s.toCharArray();int left = 0;for (int right = 0; right < chars.length; right++) {if (chars[right] == '#') {if (left > 0) {left -= 1;}}else {chars[left] = chars[right];left += 1;}}char[] res = Arrays.copyOfRange(chars, 0, left);return new String(res);}//977. 有序数组的平方 简单//你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。public int[] sortedSquares(int[] nums) {int n = nums.length - 1;int left = 0, right = n;int[] res = new int[n + 1];for (int i = 0; i < n + 1; i++) {int sumLeft = nums[left] * nums[left];int sumRight = nums[right] * nums[right];if (sumLeft <= sumRight) {res[n - i] = sumRight;right--;} else {res[n - i] = sumLeft;left++;}}return res;}
}

leetcode算法算题记录-数组--快慢指针相关推荐

  1. leetcode算法算题记录-数组--二分查找

    public class 二分查找 {//注: 数组为有序数组且数组中无重复元素是使用二分法的前提//704.二分查找 简单//给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 ta ...

  2. leetcode算法刷题记录之罗马数字转整数

    题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             ...

  3. Ants (POJNo.1852)--数据结构与算法刷题记录

    数据结构与算法刷题记录1 时间:4.28 这是第一次用CSDN来记录自己的学习成果,在此留下纪念,希望自己能够坚持下去,变得更强. 本次学习记录来源于<挑战程序设计竞赛(第2版)> Ant ...

  4. LeetCode算法刷题目录 (Java)

    目录 1.数学基础 1.1.位运算 1.2.其它 2.数据结构 2.1.线性表 2.1.1.数组(双指针) 2.1.2.链表(双指针) 2.1.3.栈 2.1.4.队列 2.1.5.字符串 2.1.6 ...

  5. [Leetcode][第40题][JAVA][数组总和2][回溯][剪枝]

    [问题描述][中等] [解答思路] 1. 减法 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Ar ...

  6. LeetCode 234. 回文链表(快慢指针+链表反转)

    1. 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false示例 2: 输入: 1->2->2->1 输出: true进阶: 你能否用 O(n) ...

  7. leetcode算法刷题记录表

    动态规划 题目 方法 日期 代码 509.斐波那契数列(简单) 递归.动态规划 2021.8.22 re 1137.第N个泰波那契数(简单) 递归.动态规划 2021.8.22 re 70.爬楼梯(简 ...

  8. [Leetcode][第216题][JAVA][数组之和3][回溯]

    [问题描述][中等] [解答思路] 回溯 剪树枝 当和超过n 或 个数超过k 1. 正向求和 优化前 class Solution {public List<List<Integer> ...

  9. leetcode 234. 回文链表(快慢指针+链表倒置)

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 代码 /*** Definitio ...

最新文章

  1. 革命性移动端开发框架-Flutter时间简史
  2. Ubuntu安装Nginx+PHP5.6+MySQL5.6
  3. linux数据块的大小不一样,HDFS块大小默认为什么是64MB(或者是128MB)
  4. xftp传输文件错误解决办法
  5. SpringBatch 写xml文件(StaxEventItemWriter)用法(十四)
  6. Chrome 访问一次 Controller,请求却执行两次
  7. 在java中构建高效的结果缓存
  8. 没有bug队——加贝——Python 39,40
  9. linux文件操作命令介绍(一)
  10. QT每日一练day22:键盘事件
  11. 利用fat jar插件生成可执行jar文件
  12. postgre数据库下的 NOT NULL 和 空串(虽然有NOT NULL设定,但是可以插入空串'')
  13. 由条件熵与无条件熵的关系引出的不等式证明题(不会抄答案系列)
  14. DoubleArrayTrie详解
  15. ICO 图标快速制作
  16. python图像拉伸_python处理图像
  17. java毕业设计成品基于JSP实现的飞机票售票管理系统[包运行成功]
  18. 交通银行计算机专业招聘笔试题4套,交通银行校园招聘笔试经验分享(试题解析)...
  19. js加密php解密---jsencrypt
  20. 因变量 方差膨胀系数_如何理解方差膨胀因子(Variance Inflation Factor,VIF)?

热门文章

  1. C语言15大头文件介绍
  2. 可视化bi平台与大数据分析的关系
  3. android编辑框最大字数,(转)Android中EditText的输入字数限制
  4. Nginx服务器配置虚拟主机的步骤
  5. 牛客小白月赛5 D.阶乘(factorial)
  6. 被绕晕了,嵌入式用C好还是用C++好
  7. No module named ‘torchvision‘
  8. 【激光与光电子进展投稿 记录】
  9. 【程序源代码】电商网站系统
  10. Webcam.getWebcamByName(“XXX“)的用法/Webcam调用摄像头的方法