1. 程式人生 > >演算法:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數

演算法:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

題目原地址:

可以把寫好的程式碼去這裡提交,驗證是否通過。

/**
 * 首先想到的肯定是拿第一個元素與後面的依次加,看是否等於目標值,
 * 然後再第二個、第三個...
 */
public int[] twoSum1(int[] nums, int target) {
    for
(int i = 0; i < nums.length - 1; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[j] == target - nums[i]) { return new int[] {i, j}; } } } return new int[]{0,0}; } /** * 把數值作為 key,它的下標作為 value * 遍歷陣列,判斷 map 是否含有這個目標值-當前數值, * 有直接返回,沒有的話放到map裡面 * * 所以以後寫程式碼,如果有雙層 for 迴圈,首先考慮一下能否用 map 替換一層 */
public int[] twoSum2(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(target - nums[i])) { return new int[]{map.get(target - nums[i]),i}; } map.put(nums[i], i); } return
new int[]{0,0}; }

這個好像有點簡單

相關推薦

演算法給定一個整數陣列一個目標值陣列中和目標值個數、判斷一個整數是否是迴文數

<!-- 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9

前端演算法給定一個整數陣列一個目標值陣列中和目標值個數、判斷一個整數是否是迴文數

<!-- 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[

演算法1給定一個整數陣列一個目標值陣列中和目標值個數的index值。

三種解決方法: 1、暴力法:遍歷每個num,查詢目標元素target-num class Solution: def twoSum(self, nums, target): """ :type nums: List[

演算法給定一個整數陣列一個目標值陣列中和目標值個數

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], tar

(python)給定一個整數陣列一個目標值陣列中和目標值個數--演算法

1、使用最容易理解的遍歷陣列進行查詢 def solution(nums,target): #如果列表長度小於2,則直接結束 if len(nums) < 2: return #兩次迴圈列表,分別對列表中的所有可

給定一個整數陣列一個目標值陣列中和目標值個數

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 個輸入只對應一種答

給定一個整數陣列一個目標值陣列中和目標值個數

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] =

LeetCode:給定一個整數陣列一個目標值陣列中和目標值個數

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 思路:先在陣列中找出比target

2.給定一個整數陣列一個目標值陣列中和目標值個數。 示例: 給定 nums = [2, 7, 11, 15], targ

class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (

【簡單演算法】1.數之和給定整數陣列目標值陣列中2數之和等於目標值的元素

接觸了程式碼,那麼演算法始終是繞不開的一個重點。 演算法對於開發人員,在日常之中的作用很大,但是對於測試人員來說,實際編碼中用到的似乎不是很多。 不過,現在大廠的測試開發的面試,演算法是必考的,而且這也的確是你的程式碼功底的一項重要體現,學學沒壞處。 ![](https://img2020.cnblogs

給定一個整數數組一個目標值數組中和目標值個數

目標 for循環 答案 [] 遍歷 一個 class tar 利用 題目描述: 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。示例:給定 nums = [2, 7, 11, 15], targ

判斷一個字串是否另外一個字串旋轉之後的字串。 例如給定s1 = AABCDs2 = BCDAA返回1給定s1=abcds2=ACBD返回

        判斷一個字串是否為另外一個字串旋轉之後的字串。例如:給定s1 = AABCD和s2 = BCDAA,返回1,給定s1=abcd和s2=ACBD,返回0 方法一: 演算法思想:一個字串左旋,無非還是這個字串本身(長度未改變),並且字元本身未改變只是順序改變;申

Two sum(給定一個無重復數組目標值數組中和目標值個數並輸出其下標)

輸出 dex 運行速度 n) 復數 target code color .get 示例: nums = [1,2,5,7] target = [6] return [0,2] 解決方案1: for i in range(len(nums)): rema

JS一個字串由[a-z]組成第一個只出現一次的字母

  var mystr = 'asdasdasdwdascxc';         function fis(str){//97             var len = str.length;             var arr = [];             f

給定個數陣列缺少的最小的正整數

題目使這樣的:請設計一個高效演算法,查詢陣列中未出現的最小正整數。 給定一個整數陣列A,請返回陣列中未出現的最小正整數。 測試樣例: [-1,2,3,4] 返回1 一看到這個題目我想到的是用另外的一個數組B,長度為A的長度+1,來儲存遍歷陣列A的數的值。 if(A[i]

程式設計基礎57 隨機選擇演算法陣列第n/2大並返回後一半減去前一半的值複雜度o(n)

#include<cstdio> #include<cstdlib> #include<ctime> #include<algorithm> using namespace std; const int max_n = 1000

用 prompt 輸入字串建立陣列陣列中最大值問題闡述與解決。

用 prompt 輸入字串建立陣列。用三種方法找出陣列中最大值。問題闡述與解決。 實現目標:輸入一組數,並找出這組數中最大的值。 採用的方法: 雙 for迴圈,列出從小到大(從大到小)順序。 單 for 迴圈,一遍迴圈找出最大值。 使用 Math.max。

輸入n個整數其中最小的K個數

vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { int len=input.si

輸入n個整數其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字則最小的4個數字是1,2,3,4,。

解題思路: 1、最簡單方法,先排序,再取前k個,時間複雜度O(NlogN) class Solution { public: vector<int> GetLeastNumbers