1. 程式人生 > >一文秒殺三個經典面試求和問題

一文秒殺三個經典面試求和問題

一文帶你秒殺三個求和問題 今天為大家帶來三道求和問題,通過文字,圖畫,動圖為大家解析,很容易就能讀懂,每道題目都是經典題,大家快來打卡吧。 題目來源: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) {