代码随想录双指针专题二刷

双指针专题 就是把前面几个专题的部分使用到双指针的题目进行挑选

27.移除元素

class Solution {
public:int removeElement(vector<int>& nums, int val) {int slowIndex = 0;for(int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {if(val != nums[fastIndex]) {nums[slowIndex++] = nums[fastIndex];}}return slowIndex;}
};

26.删除排序数组中的重复项

class Solution {
public:int removeDuplicates(vector<int>& nums) {int slow = 0;for(int fast = 0; fast < nums.size() - 1; fast++) {if(nums[fast] != nums[fast + 1]) {nums[++slow] = nums[fast + 1];}}return slow + 1;}
};

283,移动零

class Solution {
public:void moveZeroes(vector<int>& nums) {int slow = 0;for(int fast = 0; fast < nums.size(); fast++) {if(0 != nums[fast]) {nums[slow ++] = nums[fast];}}for(int i = slow; i < nums.size(); i++) {nums[i] = 0;}}
};

844.比较含退格的字符串

class Solution {
public:bool backspaceCompare(string s, string t) {int SSkipNum = 0;   // 记录s的数量int TSkipNum = 0;   // 记录t的数量int i = s.size() - 1;int j = t.size() - 1;while(1) {while(i >= 0) {if(s[i] == '#') SSkipNum++;else {if(SSkipNum > 0) SSkipNum--;else break;}i--;}while(j >= 0) {if(t[j] == '#') TSkipNum++;else {if(TSkipNum > 0) TSkipNum--;else break;}j--;}// 后半部分#消除完了,接下来比较s[i] != t[j]if(i < 0 || j < 0) break;   // 遍历到头了if(s[i] != t[j]) return false;i--;j--;}// 说明s和t同时遍历完毕if(i == -1 && j == -1) return true;return false;}
};

977.有序数组的平方

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int left = 0;int right = nums.size() - 1; vector<int> vec(nums.size());int i = nums.size() - 1;while(left <= right) {if(nums[left] * nums[left] > nums[right] * nums[right]) {vec[i--] = nums[left] * nums[left];left++;} else {vec[i--] = nums[right] * nums[right];right--;}}return vec;}
};

344.反转字符串

class Solution {
public:void reverseString(vector<char>& s) {int left = 0;int right = s.size() - 1;while(left < right) {swap(s[left], s[right]);left++;right--;}}
};

替换数字

# include <iostream>
# include <string>
using namespace std;int main() {string s;cin >> s;int front = s.size() - 1;int num = 0;for(int i = 0; i < s.size(); i++) {if(s[i] >= '0' && s[i] <= '9') {num++;}}s.resize(num * 5 + front + 1);int back = s.size() - 1;for(; front < back; back--, front--) {if(s[front] >= '0' && s[front] <= '9') {s[back - 5] = 'n';s[back - 4] = 'u';s[back - 3] = 'm';s[back - 2] = 'b';s[back - 1] = 'e';s[back] = 'r';back -= 5;} else {s[back] = s[front];}}cout << s;}

151.反转字符串里的单词

class Solution {
public:void reverse(string& s, int start, int end) {while(start < end) {swap(s[start], s[end]);start++;end--;}}void removeExtraSpaces(string& s) {int slow = 0;for(int i = 0; i < s.size(); i++) {if(s[i] != ' ') {if(slow > 0) s[slow++] = ' ';while(i < s.size() && s[i] != ' ') {s[slow] = s[i];slow++;i++;}}}s.resize(slow);}string reverseWords(string s) {removeExtraSpaces(s);int start = 0;reverse(s, start, s.size() - 1);for(int i = 0; i <= s.size(); i++) {if(s[i] == ' ' || i == s.size()) {reverse(s, start, i - 1);start = i + 1;}}return s;}
};

19.删除链表的倒数第N个节点

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummyHead = new ListNode(0);dummyHead->next = head;ListNode* slow = dummyHead;ListNode* fast = dummyHead;while(n-- && fast != nullptr) {fast = fast->next;}// fast 在提前走一步,需要让slow指向删除节点的上一个节点fast = fast->next;while(fast != nullptr) {fast = fast->next;slow = slow->next;}// 找到倒数第N个节点slow->next = slow->next->next;return dummyHead->next;}
};

链表相交

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* curA = headA;ListNode* curB = headB;while(curA != curB) {if(curA == NULL) {curA = headB;} else {curA = curA->next;}if(curB == NULL) {curB = headA;} else {curB = curB->next;}}return curA;}
};

142.环形链表II

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *detectCycle(ListNode *head) {ListNode* fast = head;ListNode* slow = head;while(fast != NULL && fast->next != NULL) {// 双指针slow = slow->next;fast = fast->next->next;// 快慢指针相遇if(slow == fast) {ListNode* index1 = fast;ListNode* index2 = head;while(index1 != index2) {index1 = index1->next;index2 = index2->next;}return index2;}}return NULL;}
};

15.三数之和

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(), nums.end());vector<vector<int>> result;for(int i = 0; i < nums.size(); i++) {if(nums[i] > 0 && i >= 0) break;if(i > 0 && nums[i] == nums[i - 1]) {continue;}int left = i + 1;int right = nums.size() - 1;while(left < right) {if(nums[i] + nums[left] + nums[right] > 0) right--;else if(nums[i] + nums[left] + nums[right] < 0) left++;else {result.push_back(vector<int>{nums[i], nums[left], nums[right]});while(left < right && nums[left] == nums[left + 1]) left++;while(left < right && nums[right] == nums[right - 1]) right--;left++;right--;}}}return result;}
};

10.四数之和

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(), nums.end());vector<vector<int>> vec;for(int i = 0; i < nums.size(); i++) {if(nums[i] >= 0 && nums[i] > target) {break;}if(i > 0 && nums[i] == nums[i - 1]) {continue;}for(int j = i + 1; j < nums.size(); j++) {if(nums[i] + nums[j] >= 0 && nums[i] + nums[j] > target) {break;}if(j > i + 1 && nums[j] == nums[j - 1]) {continue;}int left = j + 1;int right = nums.size() - 1;while(left < right) {if((long) nums[i] + nums[j] + nums[left] + nums[right] > target) right--;else if((long) nums[i] + nums[j] + nums[left] + nums[right] < target) left++;else {vec.push_back(vector<int>{nums[i], nums[j], nums[left], nums[right]});while(left < right && nums[left] == nums[left + 1]) left++;while(left < right && nums[right] == nums[right - 1]) right--;left++;right--;}}}}return vec;}
};

明天开始HOT100   

坚持每天3道HoT100 + 复盘随想录的栈和队列专题

冲!!! 

争取三天把项目复盘完!

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

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

相关文章

《Linux高性能服务器编程》笔记08

Linux高性能服务器编程 本文是读书笔记&#xff0c;如有侵权&#xff0c;请联系删除。 参考 Linux高性能服务器编程源码: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服务器编程 文章目录 Linux高性能服务器编程第08章 高性能服务器程序框架8.1 服务器…

技术周总结 2024.01.22-01.28

本周主要的技术点&#xff1a; 1&#xff09;maven中的包加载机制&#xff1a; 主要是 maven clean install -U和 maven clean install的区别。 主要表现在 &#xff0c;-U是从远方仓库里去拉去jar包优先是从本系统中获取jar包&#xff0c;本地没有再去远方仓库获取2&#xf…

docker拉取镜像时指定其OS及CPU指令集类型

前言 之前在香橙派5上安装的时候碰到过一次指定镜像的OS及cpu指令集类型的问题&#xff0c;但是当时没有记录&#xff0c;现在用到 了又想不起来&#xff0c;干脆就自己记录一下。预防后面忘掉。docker报错截图 上次时在arm的cpu中运行x86镜像&#xff0c;这次时在x86中运行arm…

C语言从入门到入坟

前言 1.初识程序 有穷性 在有限的操作步骤内完成。有穷性是算法的重要特性&#xff0c;任何一个问题的解决不论其采取什么样的算法&#xff0c;其终归是要把问题解决好。如果一种算法的执行时间是无限的&#xff0c;或在期望的时间内没有完成&#xff0c;那么这种算法就是无用…

forwardRef - React父组件控制子组件

作用&#xff1a;forwardRef 用于拿到父组件传入的 ref 属性&#xff0c;这样在父组件便能通过 ref 控制子组件。 父组件&#xff1a; import { useRef } from "react";import About from "./comment/About"; //引入子组件function App() {const typeRef …

飞天使-linux操作的一些技巧与知识点5-expect与docker便捷命令

expect 主要使用场景不输入账户密码的多 yum install -y expect 则可以安装上 #!/usr/bin/expect -f set username “root” set password “123456” spawn /bin/bash send “cd /data/container/\r” expect "$ " # 等待命令提示符 send “git pull\r” expect…

openEuler如何指定镜像源或更换镜像源

前言 因为openGauss数据库当前仅仅支持以下操作系统&#xff0c;而且本人用的时arm架构&#xff0c;所以只能在openEuler中安装 又因为硬件的原因只能用某个国产操作系统&#xff08;由此可见国产统一可太难了&#xff09;&#xff0c;想着通过用docker镜像去安装 openEuler&am…

MYSQL库和表的操作(修改字符集和校验规则,备份和恢复数据库及库和表的增删改查)

文章目录 一、MSYQL库的操作1.连接MYSQL2.查看当前数据库3.创建数据库4.字符集和校验规则5.修改数据库6.删除数据库7.备份和恢复8.查看连接 二、表的操作1.创建表2.查看表结构3.修改表4.删除表 一、MSYQL库的操作 1.连接MYSQL 我们使用下面的语句来连接MSYQL&#xff1a; my…

关于session每次请求都会改变的问题

这几天在部署一个前后端分离的项目&#xff0c;使用docker进行部署&#xff0c;在本地测试没有一点问题没有&#xff0c;前脚刚把后端部署到服务器&#xff0c;后脚测试就出现了问题&#xff01;查看控制台报错提示跨域错误&#xff1f;但是对于静态资源请求&#xff0c;包括登…

uni-app h5对接 thinkphp5接口跨域

uni-app h5对接 thinkphp5接口跨域 问题描述 请求接口 提示 Access to XMLHttpRequest at http://******* from origin http://localhost:8091 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: It does not have HTTP o…

【CSS】字体效果展示

测试时使用了Google浏览器。 1.Courier New 2.monospace 3.Franklin Gothic Medium 4.Arial Narrow 5.Arial 6.sans-serif 7.Gill Sans MT 8.Calibri 9.Trebuchet MS 10.Lucida Sans 11.Lucida Grande 12.Lucida Sans Unicode 13.Geneva 14.Verdana 15.Segoe UI 16.Tahoma 17.…

【2024华数杯国际数学建模竞赛】问题B 光伏发电 完整代码+结果分析+论文框架(二)

问题B&#xff08;二&#xff09; 5.2 问题二模型的建立与求解&#xff08;二&#xff09;5.1.4基于LSTM的时间序列预测模型5.1.5 LSTM的时间序列预测结果5.1.6 多元回归模型的预测结果5.1.7 LSTM时间序列模型的性能评价 5.2 问题二模型的建立与求解5.2.1基于皮尔逊系数相关性分…

第十四届蓝桥杯省赛pythonB组题。 管道

5407. 管道 - AcWing题库 ​​​ 有一根长度为 len的横向的管道&#xff0c;该管道按照单位长度分为 len 段&#xff0c;每一段的中央有一个可开关的阀门和一个检测水流的传感器。 一开始管道是空的&#xff0c;位于 Li 的阀门会在 Si 时刻打开&#xff0c;并不断让水流入管道。…

【C++中STL】set/multiset容器

set/multiset容器 Set基本概念set构造和赋值set的大小和交换set的插入和删除set查找和统计 set和multiset的区别pair对组两种创建方式 set容器排序 Set基本概念 所有元素都会在插入时自动被排序。 set/multist容器属于关联式容器&#xff0c;底层结构属于二叉树。 set不允许容…

go windows环境下编译成 linux可执行文件

cmd执行以下命令&#xff1a; set GOARCHamd64 go env -w GOARCHamd64 set GOOSlinux go env -w GOOSlinux然后go build [文件名]&#xff0c;编译好的程序放到linux环境下 chmod 777 [文件名] 给权限&#xff0c;执行即可 再切换回windows go env -w GOARCHamd64 go env -…

设计高并发分布式锁架构的实用指南

在面对Java超大并发需求时&#xff0c;设计一个高效的分布式锁架构是至关重要的。本文将为您提供一套清晰明了、实践方便的设计指南&#xff0c;以确保系统在高并发场景下能够稳定可靠地运行。 1. 需求分析 首先&#xff0c;了解业务需求对分布式锁的具体要求至关重要。考虑到…

代码随想录算法训练营第16天| Leetcode 110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

目录 Leetcode 110.平衡二叉树 Leetcode 257.二叉树的所有路径 Leetcode 404.左叶子之和 Leetcode 110.平衡二叉树 题目链接&#xff1a;Leetcode 110.平衡二叉树 题目描述&#xff1a;给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。本题中&#xff0c;一棵高度平…

架构师的36项修炼-08系统的安全架构设计

本课时讲解系统的安全架构。 本节课主要讲 Web 的攻击与防护、信息的加解密与反垃圾。其中 Web 攻击方式包括 XSS 跨站点脚本攻击、SQL 注入攻击和 CSRF 跨站点请求伪造攻击&#xff1b;防护手段主要有消毒过滤、SQL 参数绑定、验证码和防火墙&#xff1b;加密手段&#xff0c…

java关键字概述——final及常量概述

前言&#xff1a; 打好基础&#xff0c;daydayup! final final概述 final关键字是最终的意思&#xff0c;可以修饰&#xff08;类&#xff0c;方法&#xff0c;变量&#xff09; final作用 修饰类&#xff1a;该类被称为最终类&#xff0c;特点为不能被继承 修饰方法&#xff…

智能GPT图书管理系统(SpringBoot2+Vue2)、接入GPT接口,支持AI智能图书馆

☀️技术栈介绍 ☃️前端主要技术栈 技术作用版本Vue提供前端交互2.6.14Vue-Router路由式编程导航3.5.1Element-UI模块组件库&#xff0c;绘制界面2.4.5Axios发送ajax请求给后端请求数据1.2.1core-js兼容性更强&#xff0c;浏览器适配3.8.3swiper轮播图插件&#xff08;快速实…