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

双指针-【3,4,5,6,7,8】

第三题:快乐数

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/happy-number/算法思想:

1.每个节点的值是唯一的(因为会形成环),所以用节点的值充当指针。

2.快指针走两步,慢指针走一步,下次相遇时在环内。

3.如果是快乐数,则环中的数字全是1,否则都不是1(因为1的下一个就是1),直接判定相遇时节点的值即可。

4.一定会形成环,这里就不证明了,因为题目条件给了。(就算不给,也是一定成环的)。

代码实现:

class Solution {
public:int next(int n) {int res=0;while(n) {res+=(n%10)*(n%10);n/=10;}return res;}bool isHappy(int n) {int slow=n,fast=n;do {fast=next(fast);fast=next(fast);slow=next(slow);}while(fast!=slow);if(fast==1) return true;return false;}
};

第四题:盛水最多的容器

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/container-with-most-water/

算法思想:

V = Height* Width(Height取较小的那一个)

取两头,对于当中较短的边,这已经是最好的情况了(此时宽度取最大(区间长度),高度也取最大(自己本身)),将其计入后就不用再考虑了。现在区间缩小了。

如此循环下去,区间比1小时(l>=r)即可退出。

代码实现:

class Solution {
public:int maxArea(vector<int>& height) {int l=0,r=height.size()-1,res=0;while(l<r) {int NewRes=min(height[l],height[r])*(r-l);if(NewRes>res) res=NewRes;if(height[l]>height[r]) --r;else ++l;}return res;}
};

第五题:有效三角形之和

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/valid-triangle-number/算法思想:

1.排序,使数组单调递增。

2.固定最大的数(下标最小是2,否则凑不到三个数),然后从该数组左边的区间取剩下的两个数字。

3.取小区间的两头(一个最小(l),一个最大(r))

如果这两个数足够大(max太大了,min都能带动,其他的更能带的动),res+=r-l;   --r;(r已经计算完了)

如果这两个数不够大(min太小了,max都带不动),++l;( l 太小了,没有利用价值了)

当l与r相遇时,这个大数就计算完了

4.计算下一个大数,一直循环到最后一个

代码实现:

class Solution {
public:int triangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int res=0,size=nums.size();for(int i=2;i<size;++i) {int l=0,r=i-1;while(l<r) {if(nums[l]+nums[r]>nums[i]) {res+=r-l; --r; }else ++l;}}return res;}
};

第六题:两数之和

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/算法思想:

取区间的两头(一个最小(l),一个最大(r))

如果这两个数大了(max太大了,带上最小的数还是超过了target,所以min无用) --r;

如果这两个数小了(min太小了,带上了最大的数都够不到target,所以max无用)++l;

如果相等就找到了,走人!

每一次行动都会让区间宽度减1,如果减没了(也就是两指针相遇)还没找到,那就是没有了。

class Solution {
public:vector<int> twoSum(vector<int>& price, int target) {int l=0,r=price.size()-1;while(l<r){if(price[l]+price[r]==target) return {price[l],price[r]};else if(price[l]+price[r]>target) --r;else ++l;}return {};}
};

第七题:三数之和

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/3sum/算法思想:

排序+双指针

注意:去重

1.固定一个数,然后在他右边(因为本思路左边的数都计完了)的区间利用双指针解决两数之和问题。

运行双指针时去重:

对于l:如果加加完了,数值不变,则继续加加,一直到数值变化

对于r:如果减减完了,数值不变,则接着减减,一直到数值变化

2.固定第一个,在固定下一个,将数组遍历一遍。

遍历时去重:如果加加完了,数值不变,则继续加加,一直到数值变化

在连续加加减减时,要注意越界问题。

解决方案:在连续加加减减时,每变化一次,判定一次

代码实现:

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

第八题:四数之和

算法思想:

排序+双指针

注意:去重

1.从左到右轮流固定每一个数,然后在他右边的区间利用双指针解决三数之和问题。

2.去重问题和三数之和类似,此处略。

代码实现:

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());vector<vector<int>> res;int size = nums.size();for(int i=0;i<size-3;) {for(int j=i+1;j<size-2;) {int k=j+1,r=size-1;while(k<r) {if((long)nums[i]+nums[j]+nums[k]+nums[r]<target) ++k;else if((long)nums[i]+nums[j]+nums[k]+nums[r]>target) --r;else if((long)nums[i]+nums[j]+nums[k]+nums[r]==target) {res.push_back({nums[i],nums[j],nums[k],nums[r]});++k; --r;while(k<r&&nums[k]==nums[k-1]) ++k;while(k<r&&nums[r]==nums[r+1]) --r;}}++j;while(j<size-2&&nums[j]==nums[j-1]) ++j;}++i;while(i<size-3&&nums[i]==nums[i-1]) ++i;}return res;}
};

相关文章:

双指针-【3,4,5,6,7,8】

第三题&#xff1a;快乐数 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/happy-number/算法思想&#xff1a; 1.每个…...

react Vant中如何获取步进器的值

在React中使用Vant&#xff08;一个轻量、可靠的移动端Vue组件库&#xff0c;虽然原生是为Vue设计的&#xff0c;但如果你在使用的是React版本的Vant&#xff0c;比如通过某些库或框架桥接Vue组件到React&#xff0c;或者是一个类似命名的React UI库&#xff09;&#xff0c;获…...

Windows下Git Bash乱码问题解决

Windows下Git Bash乱码问题解决 缘起 个人用的电脑是Mac OS&#xff0c;系统和终端编码都是UTF-8&#xff0c;但公司给配发的电脑是Windows&#xff0c;装上Git Bash在使用 git commit -m "中文"时会乱码 解决 确认有以下配置 # 输入 git config --global --lis…...

HTML5 + CSS3

HTML 基础 准备开发环境 1.vscode 使用 新建文件夹 ---> 左键拖入 vscode 中 2.安装插件 扩展 → 搜索插件 → 安装打开网页插件&#xff1a;open in browser汉化菜单插件&#xff1a;Chinese 3.缩放代码字号 放大,缩小&#xff1a;Ctrl 加号&#xff0c;减号 4.设…...

NFTScan | 07.22~07.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.07.22~ 2024.07.28 NFT Hot News 01/ 数据&#xff1a;NFT 系列 Liberty Cats 地板价突破 70000 MATIC 7 月 22 日&#xff0c;据 Magic Eden 数据&#xff0c;NFT 系列 Liberty C…...

24年第三届钉钉杯大学生大数据挑战赛

...

探索分布式光伏运维系统的组成 需要几步呢?

前言 随着光伏发电的不断发展&#xff0c;对于光伏发电监控系统的需求也日益迫切&#xff0c;“互联网”时代&#xff0c;“互联网”的理念已经转化为科技生产的动力&#xff0c;促进了产业的升级发展&#xff0c;本文结合“互联网”技术提出了一种针对分散光伏发电站运行数据…...

做知识付费项目还能做吗?知识付费副业项目如何做?能挣多少钱?

hello,我是阿磊&#xff0c;一个20年的码农&#xff0c;6年前代码写不动了&#xff0c;转型专职做副业项目研究&#xff0c;为劳苦大众深度挖掘互联网副业项目&#xff0c;共同富裕。 现在做知识付费项目还能做吗&#xff1f; 互联网虚拟资源项目我一直在做&#xff0c;做了有…...

K210视觉识别模块学习笔记7:多线程多模型编程识别

今日开始学习K210视觉识别模块: 图形化操作函数 亚博智能 K210视觉识别模块...... 固件库: canmv_yahboom_v2.1.1.bin 训练网站: 嘉楠开发者社区 今日学习使用多线程、多模型来识别各种物体 这里先提前说一下本文这次测试实验的结果吧&#xff1a;结果是不太成…...

Go语言教程(一看就会)

全篇文章 7000 字左右&#xff0c; 建议阅读时长 1h 以上。 Go语言是一门开源的编程语言&#xff0c;目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力&#xff0c;以及在现代语言中所见到的高级特性。它是快速的、静态类型编译语言。 第一个GO程序…...

【Golang 面试 - 基础题】每日 5 题(十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

OD C卷 - 密码输入检测

密码输入检测 &#xff08;100&#xff09; 给定一个密码&#xff0c;‘<’ 表示删除前一个字符&#xff0c;输出最终得到的密码&#xff0c;并判断是否满足密码安全要求&#xff1a; 密码长度>8;至少包含一个大写字母&#xff1b;至少包含一个小写字母&#xff1b;至少…...

【每日一题】【逆推法 + 贪心】【数学】造数 河南萌新联赛2024第(一)场:河南农业大学 A题 C++

河南萌新联赛2024第&#xff08;一&#xff09;场&#xff1a;河南农业大学 A题 造数 题目描述 样例 #1 样例输入 #1 2样例输出 #1 1样例 #2 样例输入 #2 5样例输出 #2 3做题思路 本题可以用逆推法 将三种操作反过来变为 − 1 , − 2 , / 2 -1 , -2 , /2 −1,−2,/2 …...

刷题计划 day4 【双指针、快慢指针、环形链表】链表下

⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题专题&#xff0c;往期可看专栏&#xff0c;关注不迷路&#xff0c; 您的支持是我的最大动力&#x1f339;~ 目录 ⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题…...

最高200万!苏州成都杭州的这些AI政策补贴,你拿到了吗?

随着全球人工智能技术的迅猛发展&#xff0c;地方政府纷纷出台相关政策以抢占未来科技的制高点。苏州 成都 杭州这三个城市更是推出了一系列AI政策补贴&#xff0c;旨在通过多方面支持&#xff0c;推动本地AI产业的发展。本文将带你了解目前不完全统计到的苏州 成都 杭州三地AI…...

使用两台虚拟机分别部署前端和后端项目

使用两台虚拟机分别部署前端和后端项目 1 部署方案2 准备两台虚拟机&#xff0c;并配置网络环境3 部署后端项目3.1 打包服务3.2 上传jar包到服务器3.3 集成Systemd3.3.1 移动端服务集成Systemd3.3.2 后台管理系统集成Systemd 4 配置域名映射5 部署前端项目5.1 移动端5.1.1 打包…...

Halcon学习之derivate_gauss

HALCON 图像处理库中的一个常用算子&#xff0c;用于计算图像的高斯导数。高斯导数是一种平滑导数&#xff0c;在计算过程中结合了高斯滤波&#xff0c;具有平滑噪声的效果。这个算子可以计算图像的不同导数&#xff0c;如梯度、一阶导数、二阶导数、以及 Hessian 行列式等。 …...

智能优化算法(三):遗传算法

文章目录 1.问题描述2.遗传算法2.1.算法概述2.2.编码操作2.3.选择操作2.4.交叉操作2.5.变异操作2.6.算法流程 3.算法实现3.1.MATLAB代码实现3.2.Python代码实现 4.参考文献 1.问题描述 \quad 在利用启发式算法求解问题时&#xff0c;我们常常需要应用遗传算法解决函数最值问题&…...

Docker部署nacos...用户名密码错误

前提 镜像选择v2.3.0版本&#xff0c;因为最新的没拉下来用的别的地方save load的镜像。 官方示例 官方文档 数据库脚本&#xff0c;直接去数据库新建数据库nacos吧&#xff0c;执行脚本&#xff0c;执行完成后&#xff0c;发现只有建表语句&#xff0c;查询得知&#xff0c…...

搭建Vue开发环境

一、下载Vue.js 进入官网教程安装 — Vue.js (vuejs.org) 下载开发版本到本地 二、安装 Vue Devtools 安装完成后...

AI生成镜头如何通过DIT审核?——Netflix《The Last Frame》技术白皮书首度公开(附VFX合规性检查清单PDF)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI视频生成在电影制作中的应用 AI视频生成技术正深刻重构电影工业的工作流&#xff0c;从前期预演到后期特效&#xff0c;再到个性化内容分发&#xff0c;其渗透已覆盖创作全生命周期。传统依赖高成本实拍与手…...

LangChain-Chatchat 开发与应用(九) 性能优化实战-从能用到好用的调优之路

性能优化实战&#xff1a;从"能用"到"好用"的调优之路 标签&#xff1a;性能优化 | 并发 | 显存 | 缓存 | 监控 | 调优 一、性能问题的"众生相" 你的 Chatchat 系统是不是遇到过这些情况&#xff1f; 一个人用挺快&#xff0c;三个人同时问就卡…...

用随机森林实现手写大写字母识别的完整实践

1. 项目概述&#xff1a;用随机森林搞定手写信件识别&#xff0c;这事儿比你想象中更接地气 “How To Perform Letter Recognition in Python Using Random Forest Classifier”——这个标题乍看像教科书里的章节名&#xff0c;但实际拆开来看&#xff0c;它直指一个非常典型、…...

Kubernetes节点管理:管理集群节点的关键策略

Kubernetes节点管理&#xff1a;管理集群节点的关键策略 一、Kubernetes节点管理概述 1.1 节点管理的定义 Kubernetes节点管理是指对集群中节点的生命周期进行管理的过程&#xff0c;包括节点的加入、配置、监控、维护和退出。它确保集群中的节点能够高效、可靠地运行工作负载。…...

Unity ScriptableObject+序列化多态构建模块化特效系统

1. 这不是“换个写法”&#xff0c;而是重构整个效果系统的底层逻辑在Unity项目做到中后期&#xff0c;你大概率会遇到这样一个场景&#xff1a;美术同学提来第17个新粒子特效需求&#xff0c;策划说“和之前那个爆炸效果差不多&#xff0c;但要加个拖尾音效屏幕震动”&#xf…...

深入解析Linux内核sk_buff:网络数据包的内存布局与核心操作

1. 项目概述&#xff1a;从“数据包”到“sk_buff”的认知跃迁在网络编程或者内核开发领域&#xff0c;无论你是刚入门的新手&#xff0c;还是已经写过几个驱动模块的开发者&#xff0c;迟早都会与一个名为sk_buff的数据结构狭路相逢。这个名字听起来有点古怪&#xff0c;它是“…...

NoFences:免费开源的Windows桌面整理终极方案,告别杂乱桌面

NoFences&#xff1a;免费开源的Windows桌面整理终极方案&#xff0c;告别杂乱桌面 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为Windows桌面上杂乱无章的图标而烦恼…...

如何用Python快速接入Taotoken并调用多模型API完成数据清洗任务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何用Python快速接入Taotoken并调用多模型API完成数据清洗任务 对于需要处理客户数据的开发者而言&#xff0c;数据清洗与结构化是…...

利用 AI Agent 优化日常办公自动化流程

AI Agent优化办公自动化流程的核心逻辑是「人定规则&#xff0c;AI跑流程」‌&#xff0c;通过把重复、步骤明确的工作交给AI Agent自主执行&#xff0c;实现提效降本&#xff0c;具体可以按照以下方法落地&#xff1a;一、先明确落地逻辑把目标工作拆成「触发条件→执行步骤→…...

龙芯LoongArch开发板实战:从2K0500到3A5000的嵌入式开发指南

1. 项目概述&#xff1a;当国产龙芯遇上嵌入式开发板最近几年&#xff0c;国产芯片的讨论热度一直很高&#xff0c;但很多开发者朋友可能和我当初一样&#xff0c;感觉它们离实际的嵌入式项目开发还有点距离。要么是资料难找&#xff0c;要么是生态工具链不成熟&#xff0c;上手…...