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

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(n​2​​), 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 O(n)O(n)O(n) 的時間。因此時間複雜度為 O(n2)O(n^2)O(n​2​​)。

  • 空間複雜度: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

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