一文秒殺三個經典面試求和問題
阿新 • • 發佈:2020-12-01
一文帶你秒殺三個求和問題
今天為大家帶來三道求和問題,通過文字,圖畫,動圖為大家解析,很容易就能讀懂,每道題目都是經典題,大家快來打卡吧。
題目來源:leetcode 1.兩數之和(簡單) 15.三數之和(中等) 18.四數之和(中等)
# 兩數之和
## 題目描述:
> 給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
>
> 你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。
>
示例:
> 給定 nums = [2, 7, 11, 15], target = 9
>
> 因為 nums[0] + nums[1] = 2 + 7 = 9
> 所以返回 [0, 1]
題目很容易理解,即讓檢視陣列中有沒有兩個數的和為目標數,如果有的話則返回兩數下標,我們為大家提供兩種解法雙指標(暴力)法,和雜湊表法
### 雜湊表
#### 解析
雜湊表的做法很容易理解,我們只需通過一次迴圈即可,假如我們的 target 值為 9,當前指標指向的值為 2 ,我們只需從雜湊表中查詢是否含有 7,因為9 - 2 =7 。如果含有 7 我們直接返回即可,如果不含有則將當前的2存入雜湊表中,指標移動,指向下一元素。注: key 為元素值,value 為元素索引。
動圖解析:
![兩數之和](https://cdn.jsdelivr.net/gh/tan45du/tan45du.github.io.photo@master/photo/兩數之和.7228lcxkqpw0.gif)
是不是很容易理解,下面我們來看一下題目程式碼。
#### 題目程式碼:
```
class Solution {
public int[] twoSum(int[] nums, int target) {