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

手机端 网站 模板推广网上国网

手机端 网站 模板,推广网上国网,wordpress功能强大的主题,松岗做网站费用文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: LCR 179.查找总价格为目标值的两个商品 题目描述: 解法 解法一(暴力解法,会超时) 两层 for 循环列出所有两个数字的组合…

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:
    • 图解


题目链接:

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


题目描述:

bf3710fc5731e7753df89b664e052d0e


解法

解法一(暴力解法,会超时)

两层 for 循环列出所有两个数字的组合,判断是否等于目标值。

外层 for 循环依次枚举第一个数 a

内层 for 循环依次枚举第二个数 b ,让它与 a 匹配;我们挑选第二个数的时候,可以不从第一个数开始选,因为 a 前面的数我们都已经在之前考虑过了。因此,我们可以从 a 往后的数开始列举。

然后将挑选的两个数相加,判断是否符合目标值。

解法二(双指针 - 对撞指针)

利用单调性,使用双指针算法解决问题

58526e9691445db584ed6c89e40aa5a5

如果2+21<30,那么2+7,2+11等等都不用计算了,因为肯定比2+21小。

left+right<tleft就要往后移动一位。

8722d00541ca322f6f486bacb06f4eb8

left+right<tleft往后移动一位。

686d41b3163332075d63cd7df736e5d9

left+right>tright往前移动一位。

78d39f526b9be96c8d1a5bef41da7dd3

left+right==t,返回结果。


C++ 算法代码:

解法一(暴力解法,会超时)

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>& nums, int target) {int left = 0, right = nums.size() - 1;while(left < right){int sum = nums[left] + nums[right];if(sum > target){right--;}else if(sum < target){left++;}else{return{nums[left], nums[right]};}}// 没有结果就照顾编译器,随便返回个东西。return {-4941, -1};}
};

图解

nums=[2,7,11,15,19,21],t=30

58526e9691445db584ed6c89e40aa5a5

  1. left=0,right=5

    left < right进入while循环

    sum=nums[0] + nums[5]=2+21=23<30

    left++;left=1

8722d00541ca322f6f486bacb06f4eb8

  1. left=1,right=5

    left < right进入while循环

    sum=nums[1] + nums[5]=7+21=28<30

    left++;left=2

686d41b3163332075d63cd7df736e5d9

  1. left=2,right=5

    left < right进入while循环

    sum=nums[2] + nums[5]=11+21=32>30

    right--;right=4

78d39f526b9be96c8d1a5bef41da7dd3

  1. left=2,right=4

    left < right进入while循环

    sum=nums[2] + nums[4]=11+19=30==30

    return{11, 19};

  2. 因为是顺序排列的,所以再次移动得到的不会刚好符合,或者得到的和本次一样,所以程序结束。

http://www.yayakq.cn/news/796100/

相关文章:

  • 东莞网站如何屏蔽WordPress更新
  • 大连手机自适应网站建设报价北京网页制作电话
  • 网站开发的数据wordpress云储存缩略图wpjam
  • 镜美硅藻泥网站是那家公司做的帮你做海报网站
  • 网站建设公司发展方向及趋势落实二十条优化措施
  • 国外h5网站模板投票网站定制
  • 爱站网seo二级建造师怎么查询注册信息
  • 肯德基网站是哪家公司做的东莞市企业名录
  • 自做网站的步骤建设网站域名备案查询
  • 刘素云网站脱孝怎样做wordpress在线版本
  • 怎么自己做单页网站深圳罗湖企业网站建设报价
  • 设立网站建筑门户网站
  • 罗庄建设局网站深圳全网站建设公司
  • 怎么查网站流量源代码怎么做网站
  • 本地网站做哪方面吸引人wordpress 酷狗
  • 描述网站开发的流程展示网站模板下载
  • 陕西建设银行官网站企业内部系统网站制作
  • 设计网站p站公司黄页是指什么意思
  • 免费下载app软件正版做网站优化有必要
  • 网站开发是做啥的南京做电商网站的公司
  • 网站做代码图像显示不出来手机网站开发公司哪家好
  • 德阳移动网站建设导购网站建设需求模版
  • 有哪些做网站的网站网站建设万首先金手指14
  • 免费的做微博的网站模板工程公司的经营范围
  • 建设网站只能是公司吗四川省营山县西城建筑公司网站
  • 做英文网站费用建设银行网站改手机号
  • 菏泽公司网站建设建筑工程网上培训平台
  • 大连外贸网站建设清河网站建设设计费用
  • 网站建设与运营总结公司怎么建立网站吗
  • 网站注册信息自己做同城购物网站