数组:两数之和

时间:2021-07-12
本文章向大家介绍数组:两数之和,主要包括数组:两数之和使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

目前总结的面对数组题目的思路

  1. 双指针
  2. 动态规划
  3. Hash映射
  4. 特殊:二分查找,异或运算

动态规划是针对最值问题的。

Hash映射是用来处理寻找数组特定元素问题的,常见的键值对是<符合条件的元素,当前下标>

当数组为有序数组的时候考虑到二分查找

异或运算双指针都是前面的思路考虑无果时才会考虑这两个方法,异或运算以后再说,优先说说双指针。

双指针

双指针很难说出它的用法,只能说是一种思路,具体怎么用要看具体题目。所以不要死扣双指针的本质什么的,就记住有这个东西可以分析题目。

1.同向双指针,双指针都从数组头或尾开始遍历,一个用于跟踪当前下标,另一个去远方寻找符合条件的元素。(只能说有这个用法,还是那句话,具体问题具体分析)。

2.反向双指针,双指针一个从头一个从尾开始遍历,由题目的条件判断是移动左指针还是移动右指针,直到两个元素相遇。

这题考虑其他方法没有思路,考虑反向双指针的时候有想法。

反向双指针先考虑移动条件,至于为什么要移动,移动能做出来吗这些都不需要考虑,因为如果用反向双指针最后的答案肯定有这一步!

从左或右指针指的元素和 target值来看,当右指针大于target时肯定要移动,但左指针小于target却无法确定是否要移动。由和的提示判断是通过两数之和的条件来移动双指针。

当和比target大时,移动右指针,当和比target小时,移动左指针。这样这道题就出来了!本质上是左右逼近这个数。

总结 反向双指针的条件选择不仅有大于某个数,小于某个数,还有左右之和也可以用与判断。

代码请自行写出。

原文地址:https://www.cnblogs.com/hitsz-yc/p/15003300.html