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

★ 算法OJ题 ★ 力扣 LCR179 - 和为 s 的两个数字

Ciallo~(∠・ω< )⌒☆ ~ 今天,小诗歌剧将和大家一起做一道双指针算法题--和为 s 的两个数字~

目录

一  题目

二  算法解析

三  编写算法


一  题目

LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode)

二  算法解析

解法⼀:暴力解法 O(N ^ 2)

算法思路: 两层 for 循环列出所有两个数字的组合,判断是否等于⽬标值。(会超时)

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; i++) // 第⼀层循环从前往后列举第⼀个数{ for (int j = i + 1; j < n; j++) // 第⼆层循环从 i 位置之后列举第⼆个数{ if (nums[i] + nums[j] == target) // 两个数的和等于⽬标值,说明我们已经找到结果了return { nums[i], nums[j] };}}return { -1, -1 };}
};

解法⼆:利用单调性,使用双指针 - 对撞指针解决问题

算法思路: 注意到本题是升序的数组,因此可以⽤对撞指针优化时间复杂度

三  编写算法

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


http://www.mrgr.cn/news/17125.html

相关文章:

  • 算法——K-means算法和算法改进
  • 【SpringBoot】实体多层嵌套如何判空字段?
  • Mybatis 是如何进行分页的?分页插件的原理是什么?
  • 【零知识证明】通读Tornado Cash白皮书(并演示)
  • js做一个带模糊搜索、自动补全的select组件auto-input-select
  • 向大家推荐一个好用的云服务器
  • 西部数据获准在泰国扩大硬盘生产计划
  • 8月31复盘日记
  • 顶级 SSD 硬盘数据恢复工具探讨:最佳 SSD 硬盘数据有哪些
  • 驾驶模拟左拐右拐
  • Pandas 5-单元格填充日期
  • 巧妙的数(逐倍数判断)
  • Pinterest账号被封?试试这几种解封方法
  • java 反射
  • Docker 容器编排之 Docker Compose
  • 数据结构--带头双向循环链表
  • asp.net实验:数据库写入不成功
  • Java、python、php版 保险业务管理与数据分析系统 社会保险档案管理系统(源码、调试、LW、开题、PPT)
  • ubuntu20.04 colmap安装
  • JavaWeb JavaScript ⑨ 正则表达式