算法day03

第一题 

 179. 查找总价格为目标值的两个商品

        本题采用前后指针和单调性规律可解;

解题思路如下:

1、设置前后指针

2、前后指针所指的两数之和大于目标数,右指针左移;

        前后指针所指的两数之和小于目标数,左指针右移;

3、重复步骤二,返回一个数组,里面包含所需要的数; 

class Solution {public int[] twoSum(int[] price, int target) {int left = 0,right = price.length-1,sum = 0;while (left < right){sum = price[left] + price[right];if(sum > target){right --;}else if(sum < target){left ++;}else{return new int[]{price[left],price[right]};}}return new int[]{};}
}

第二题

15. 三数之和

解题思路:本题采用左右指针和单调性的解题思路;

步骤一:

        将数组从小到大序列化;

步骤二:

        将数组中小于0的数字依次从左到右;列为固定值,我们所使用的目标值t是-固定值;

步骤三:

        在固定值右边的数组范围内确定左右指针,如下图所示;

本题的注意事项:

一:去重

去重一:

        当找到一个数组之后,左指针右移,右指针左移时,左指针移动之后所知的数值和移动之前所示的数值相同;右指针也类似有相同的情况如下图所示:

        此时我们应该判断左右指针移动前后所指向的数值如果相同的话,就继续移动,知道所指前后的数字不同停止,且左指针在右指针的右边;

去重二:

        当改变固定值时,如果移动一个之后固定值前后数值一样时,固定值接着向右移动一位,知道固定值数值与之前数值不一样;如下图所示:

代码如下:

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums);int n = nums.length;for(int i = 0;i < n; ){if(nums[i] > 0){break;}int left = i + 1,right = n - 1,t = -nums[i];while(left < right){int sum = nums[left] + nums[right];if(sum > t){right --;}else if(sum < t){left ++;}else{res.add(new ArrayList<Integer>(Arrays.asList(nums[left],nums[right],nums[i])));left ++;right --;while(left < right && nums[left]==nums[left-1]){left ++;}while(left < right && nums[right]==nums[right+1]){right --;}}}i++;while(i < n && nums[i] == nums[i-1]){i++;}}return res;}
}

第三题:

18. 四数之和

解题思路: 如三数之和故事(左右双指针和单调性)

步骤一:

        将数组从小到大序列化;

步骤二:

        将数组中的数字依次从左到右;列为固定值a和固定值b,我们所使用的目标值aim是taeget-两个固定值;

步骤三:

        在两个固定值右边的数组范围内确定左右指针,如下图所示;

本题的注意事项:

一:去重

去重一:

        当找到一个数组之后,左指针右移,右指针左移时,左指针移动之后所知的数值和移动之前所示的数值相同;

去重二:

        当改变固定值b时,如果移动一个之后固定值前后数值一样时,固定值接着向右移动一位,知道固定值数值与之前数值不一样;

去重三:

        当改变固定值a时,如果移动一个之后固定值前后数值一样时,固定值接着向右移动一位,知道固定值数值与之前数值不一样;

        综上所述,起代码如下:

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums);int n = nums.length;for(int i = 0; i< n;){for(int j = i+1;j<n;){int left = j+1,right = n-1;long aim =(long)target - nums[i] - nums[j];while(left < right){int sum = nums[left] + nums[right];if(sum> aim){right --;}else if(sum < aim){left ++;}else{res.add(new ArrayList<Integer>(Arrays.asList(nums[left],nums[right],nums[i],nums[j])));left ++;right --;while(left < right && nums[left]==nums[left-1]){left ++;}while(left < right && nums[right]==nums[right+1]){right --;}}}j++;while(j < n && nums[j] == nums[j-1]){j++;}}i++;while(i < n && nums[i] == nums[i-1]){i++;}}return res;}
}

 ps:本次的内容就到这里了,如果大家感兴趣话,就请一键三连哦,文章的图片是我喜欢的小偶像!!!

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

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

相关文章

“视频剪辑新境界:批量高效处理,画面虚化与播放速度调整一气呵成!“

在视频制作的广阔天地中&#xff0c;剪辑是赋予作品生命的关键环节。然而&#xff0c;面对大量的视频素材&#xff0c;如何高效地进行剪辑、调整&#xff0c;使每一帧画面都充满魅力&#xff0c;成为许多创作者面临的挑战。今天&#xff0c;我们为您带来一款颠覆性的视频剪辑工…

学习笔记:【QC】Android Q - IMS 模块

一、IMS init 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 二、IMS turnon 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 三、分析说明 1、nv702870 不创建ims apn pdp 2、nv702811 nv702811的时候才创建…

Objective-C的对象复制与拷贝选项

对象复制与拷贝 文章目录 对象复制与拷贝copy与mutablecopycopy与mutablecopy的简介示例&#xff1a;不可变对象的复制可变对象的复制 NSCopying和NSMutableCopying协议深复刻和浅复刻浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a;深拷贝&#xff08;Deep Copy&…

同步电机原理解析

同步电机 同步带年纪&#xff0c;顾名思义无论负载如何&#xff0c;都能以恒定的速度运转&#xff0c;它以高效率著称 这种恒速特性是通过恒定磁场和旋转磁场的相互作用实现的&#xff0c;与其他电机一样&#xff0c;同步电机由定子和转子组成&#xff0c;定子铁芯由硅片层叠而…

无人直播需要什么软件系统?最新AI实景自动无人直播软件:智能化引领直播拓客新时代

随着互联网的快速发展&#xff08;无人直播招商加盟&#xff1a;hzzxar&#xff09;直播行业已经成为商家品牌推广和商品销售的热门方式。近年来&#xff0c;人工智能技术的飞速发展&#xff0c;催生了一款令人惊叹的AI实景自动无人直播软件&#xff0c;为商家提供了全新的直播…

修改表空间的状态

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 表空间有4种状态:联机、脱机、只读和读写。修改其中某一种状态的语句如下所示 设置表空间 tspace 为联机状态。 SQL>ALTER TABLESPACE space ONLINE: 设置表空间 tspa…

google地图js,添加标记,以及infowindow信息弹窗

&#xff08;谷歌地图版本V3&#xff09; var contentString "<div classdevinfo><P>设备ID: BJ-20240507</p> <P>设备状态: 正常</p> <P>通讯信号: 89% </p> <P>设备位置: 中国</p> <P>剂量率: 988</p&…

鸿蒙开发接口Ability框架:【(StaticSubscriberExtensionAbility)】

StaticSubscriberExtensionAbility StaticSubscriberExtensionAbility模块提供静态订阅者扩展能力的类别的能力。 说明&#xff1a; 本模块首批接口从API version 9 开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 本模块接口仅可在Stage模型下…

SpringBoot之Zuul服务

概述 Spring Cloud Netflix zuul组件是微服务架构中的网关组件,Zuul作为统一网关,是所有访问该平台的请求入口,核心功能是路由和过滤。 目前公司业务就是基于Zuul搭建的网关服务,且提供的服务包括转发请求(路由)、黑名单IP访问拦截、URL资源访问时的权限拦截、统一访问日志记…

【python】模拟巴特沃斯滤波器

巴特沃斯滤波器&#xff08;Butterworth Filter&#xff09;&#xff0c;以其设计者斯蒂芬巴特沃斯&#xff08;Stephen Butterworth&#xff09;的名字命名&#xff0c;是一种具有平滑频率响应的滤波器。这种滤波器在频域中具有非常平坦的无波纹响应&#xff0c;直到它达到截止…

【springboot基础】如何搭建一个web项目?

正在学习springboot&#xff0c;还是小白&#xff0c;今天分享一下如何搭建一个简单的springboot的web项目&#xff0c;只要写一个类就能实现最基础的前后端交互&#xff0c;实现web版helloworld &#xff0c;哈哈&#xff0c;虽然十分简陋&#xff0c;但也希望对你理解web运作…

ssm115乐购游戏商城系统+vue

毕业生学历证明系统 设计与实现 内容摘要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统毕业生学历信息管理难…

iOS 17 / iPad OS 17屏蔽更新

iOS 17 / iPad OS 17屏蔽更新 1&#xff0c;进入屏蔽iOS更新的描述文件下载链接 下载链接 wx 搜索 Geek 前端发送屏蔽更新进行获取 2&#xff0c;复制这段链接&#xff0c;在Safari浏览器中打开&#xff0c;注意打开后别点击下载&#xff01;要先改时间&#xff01; 3&#…

感知机简介

感知机简介 导语感知机简单逻辑电路实现权重和配置与/或/与非与门实现与非门实现或门实现 线/非线性单/多层感知机异或 总结参考文献 导语 学习感知机有助于更好的理解深度学习的神经元、权重等概念&#xff0c;感知机的结构和概念很简单&#xff0c;只要学过基本线性代数、数…

华为静态路由跨网段通信eNSP

拓扑图&#xff1a; 底层原理&#xff1a; 通信需要4个地址 源MAC 源IP 目标MAC 目标IP ARP地址解析协议 通过ip地址解析MAC 如果是相同的网段直接通过 arp直接发送广播 谁是192.168.1.2 我需要的MAC 1.2就会回应告诉 1.1他的MAC 1.1会封装4个地址 发送方的IP MAC 接受方IP和MA…

景源畅信:抖音小店有哪些人气品类?

抖音小店作为短视频平台中的一股清流&#xff0c;已经成为了众多商家和消费者关注的焦点。在这个平台上&#xff0c;有各种各样的商品琳琅满目&#xff0c;让人眼花缭乱。那么&#xff0c;抖音小店有哪些人气品类呢?下面就从四个不同的方面来详细阐述这个问题。 一、美妆护肤类…

【挑战30天首通《谷粒商城》】-【第一天】01、简介-项目介绍

文章目录 课程介绍一、 项目介绍1、项目背景A、电商模式1、B2B 模式2、B2C 模式3、C2B 模式4、C2C 模式5、O2O 模式 1.2、项目架构图1.3、项目技术 & 特色1.4、项目前置要求二、分布式基础概念(略)三、环境撘建(略) one more thing 课程介绍 1.分布式基础(全栈开发篇)2.分…

基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园健康驿站管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

种植牙市场规模呈稳步增长态势 行业具有良好发展基础

种植牙市场规模呈稳步增长态势 行业具有良好发展基础 种植牙指的是一种以植入骨组织内的下部结构为基础来支持、固位上部牙修复体的缺牙修复方式。种植牙可以获得与天然牙功能、结构以及美观效果十分相似的修复效果&#xff0c;近年来受到市场越来越多的关注。 从行业整体来看&…

基于springboot+mybatis+vue的项目实战之增删改查CRUD

目录结构 PeotController.java package com.example.controller;import com.example.pojo.Peot; import com.example.pojo.Result; import com.example.service.PeotService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web…