LeetCode:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路:先在陣列中找出比target小的數字記為temp然後從temp遍歷陣列,只要找到temp + nums[j] == target,就返回找到的這兩個數的在陣列中的下標。
#include<stdio.h> #include<Windows.h> int main() { int nums[] = { 2, 9, 11, 15 }; int target = 13; int n = sizeof(nums) / sizeof(nums[0]); int i = 0; for (i = 0; i<n; i++) { if (nums[i] < target) { int temp = nums[i]; for (int j = i+1; j < n; j++) { if (temp + nums[j] == 13) printf("i=%d j=%d\n", i, j); } } } system("pause"); return 0; }
複雜度分析:
-
時間複雜度:O(n2)O(n^2)O(n2), 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 O(n)O(n)O(n) 的時間。因此時間複雜度為 O(n2)O(n^2)O(n2)。
-
空間複雜度:O(1)O(1)O(1)。
相關推薦
LeetCode:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 思路:先在陣列中找出比target
演算法:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數、判斷一個整數是否是迴文數
<!-- 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 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] = 2 + 7 = 9 所以返回 [0, 1] 個輸入只對應一種答
前端演算法:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數、判斷一個整數是否是迴文數
<!-- 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 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[
(python)給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數--演算法
1、使用最容易理解的遍歷陣列進行查詢 def solution(nums,target): #如果列表長度小於2,則直接結束 if len(nums) < 2: return #兩次迴圈列表,分別對列表中的所有可
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] =
演算法:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], tar
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
有一個整數陣列,請你根據快速排序的思路,找出陣列中第K大的數。 給定一個整數陣列a,同時給定它的大小n和要找的K(K在1到n之間),請返回第K大的數,保證答案存在。
一, 原快速排序的實現 http://blog.csdn.net/taotaoah/article/details/50987837 using System; namespace taotao {
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
給定一個數組,找出陣列缺少的最小的正整數
題目使這樣的:請設計一個高效演算法,查詢陣列中未出現的最小正整數。 給定一個整數陣列A,請返回陣列中未出現的最小正整數。 測試樣例: [-1,2,3,4] 返回1 一看到這個題目我想到的是用另外的一個數組B,長度為A的長度+1,來儲存遍歷陣列A的數的值。 if(A[i]
【LeetCode】442. Find All Duplicates in an Array 找出陣列中所有重複項
題目: Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot
JS:一個字串由[a-z]組成,找出第一個只出現一次的字母
var mystr = 'asdasdasdwdascxc'; function fis(str){//97 var len = str.length; var arr = []; f
用 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
程式設計基礎57 隨機選擇演算法,找出陣列第n/2大,並返回後一半減去前一半的值,複雜度o(n)
#include<cstdio> #include<cstdlib> #include<ctime> #include<algorithm> using namespace std; const int max_n = 1000