最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++求兩數(shù)之和并返回下標(biāo)詳解

 更新時(shí)間:2021年08月19日 09:23:22   作者:久病成良醫(yī)  
這篇文章主要介紹了C++求兩數(shù)之和并返回下標(biāo)題目的代碼詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個(gè) 整數(shù),并返回它們的數(shù)組下標(biāo)。

你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。

你可以按任意順序返回答案。

示例:

輸入:nums = [2,7,11,15], target = 9

輸出:[0,1]

解釋?zhuān)阂驗(yàn)?nums[0] + nums[1] == 9 ,返回 [0, 1] 。

ACM模式

#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main(){
	vector<int> nums{ 2, 7, 11, 13 }; //原數(shù)組
	vector<int> vec; //存放結(jié)果
	int target = 18;
	unordered_map<int, int> ump;
	for (int i = 0; i < nums.size(); ++i){
		auto it = ump.find(target - nums[i]);
		if (it != ump.end()){
			vec.push_back(it->second); //將值插入vec中
			vec.push_back(i);
		}
		ump[nums[i]] = i; //鍵值對(duì)的存入
	}
	for (int i = 0; i < vec.size(); ++i){
		cout << vec[i] << endl;
	}
}

核心代碼模式

方法一:

class Solution
{
public:
	vector<int> TwoSum(vector<int>&nums, int target)
	{
		int n = nums.size;
		for (int i = 0; i < n - 1; ++i)
		{
			for (int j = i + 1; j < n; ++j)
			{
				if (nums[i] + nums[j] == target)   
					return{ i, j };
			}
		}
		return{};  //空的{}表示一個(gè)空的vector<int>
	}
};

使用vector需要添加頭文件

#include <vector> 
using namespace std;

創(chuàng)建vector

vector<int> nums; //不指定長(zhǎng)度:
vector<int> nums(n); //指定長(zhǎng)度為n:
vector<int> nums(10,1);//定義具有10個(gè)整型元素的向量,且給出的每個(gè)元素初值為1
                       //nums后面是括號(hào)()不是大括號(hào){}

添加元素

直接從數(shù)組末端添加:

nums.push_back(1);

直接賦值給第i個(gè)位置:

nums[i] = 1;

刪除元素

直接將數(shù)組長(zhǎng)度減小,某種方式上刪掉了后面i個(gè):

nums.resize(nums.size-i);

刪掉最后一個(gè)元素:

nums.pop_back();

其他

nums.size(); //獲得長(zhǎng)度
sort(nums.begin(),nums.end()); //排序(O(nlogn))
reverse(nums.begin(), nums.end()); //翻轉(zhuǎn)
合并兩個(gè)vector:合并nums1和nums2,并將合并后的數(shù)組賦值給nums
vector<int> nums1(m),nums2(n);
vector<int> nums;
nums.resize(m+n); 
merge(nums1.begin(), nums1.end(),nums2.begin(),nums2.end(),nums);

方法二:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int>hashtable;    // 建立哈希表
        for(int i=0;i<nums.size();++i){     //nums.size后面要帶括號(hào)()
        // for(auto i:nums)  錯(cuò)誤,因?yàn)橹挥兄纈的類(lèi)型才可以用auto
            auto it=hashtable.find(target-nums[i]); //返回類(lèi)型是iterator迭代器
            if(it!=hashtable.end()){     // 查找it是否在hashtable里
                return{it->second,i};   //first是鍵(key),second是值(value)
                                        //hashtable[nums[i]]=i,first就是nums[i],second就是i
            }
            hashtable[nums[i]]=i;   //存入鍵值對(duì)。 hashtable(nums[i])=i;錯(cuò)誤,是[]不是()
        }
        return{};
    }
};

在這里插入圖片描述

auto的使用

C++11中引入的auto主要有兩種用途:自動(dòng)類(lèi)型推斷和返回值占位。

1.自動(dòng)類(lèi)型推斷

auto a;                 錯(cuò)誤,沒(méi)有初始化表達(dá)式,無(wú)法推斷出a的類(lèi)型
auto int a = 10;        錯(cuò)誤,auto臨時(shí)變量的語(yǔ)義在C++11中已不存在, 這是舊標(biāo)準(zhǔn)的用法。
auto a = 10;
auto c = 'A';
auto s("hello");

2.返回值占位

auto v = compose(2, 3.14);    v 的類(lèi)型是 double

unordered_map

unordered_map的頭文件

#include <unordered_map>

創(chuàng)建unordered_map容器:

unordered_map<string,string>umap;
//創(chuàng)建好了一個(gè)可存儲(chǔ) <string,string> 類(lèi)型鍵值對(duì)的 unordered_map 容器
unordered_map<int,int>umap;
//第一個(gè)int是鍵,第二個(gè)int是值

unordered_map容器的成員方法

begin()	//返回指向容器中第一個(gè)鍵值對(duì)的正向迭代器。
end() 	//返回指向容器中最后一個(gè)鍵值對(duì)之后位置的正向迭代器。
find(key)	//查找以 key 為鍵的鍵值對(duì),如果找到,則返回一個(gè)指向該鍵值對(duì)的正向迭代器;反之,則返回一個(gè)指向容器中最后一個(gè)鍵值對(duì)之后位置的迭代器(如果 end() 方法返回的迭代器)。
cbegin()和 begin() //功能相同,只不過(guò)在其基礎(chǔ)上增加了 const 屬性,即該方法返回的迭代器不能用于修改容器內(nèi)存儲(chǔ)的鍵值對(duì)。
cend()和 end() //功能相同,只不過(guò)在其基礎(chǔ)上,增加了 const 屬性,即該方法返回的迭代器不能用于修改容器內(nèi)存儲(chǔ)的鍵值對(duì)。
empty()	//若容器為空,則返回 true;否則 false。
size()	//返回當(dāng)前容器中存有鍵值對(duì)的個(gè)數(shù)。
max_size()	//返回容器所能容納鍵值對(duì)的最大個(gè)數(shù),不同的操作系統(tǒng),其返回值亦不相同。
operator[key]	//該模板類(lèi)中重載了 [] 運(yùn)算符,其功能是可以向訪問(wèn)數(shù)組中元素那樣,只要給定某個(gè)鍵值對(duì)的鍵 key,就可以獲取該鍵對(duì)應(yīng)的值。注意,如果當(dāng)前容器中沒(méi)有以 key 為鍵的鍵值對(duì),則其會(huì)使用該鍵向當(dāng)前容器中插入一個(gè)新鍵值對(duì)。
at(key)	//返回容器中存儲(chǔ)的鍵 key 對(duì)應(yīng)的值,如果 key 不存在,則會(huì)拋出 out_of_range 異常。 
count(key)	//在容器中查找以 key 鍵的鍵值對(duì)的個(gè)數(shù)。
equal_range(key)	//返回一個(gè) pair 對(duì)象,其包含 2 個(gè)迭代器,用于表明當(dāng)前容器中鍵為 key 的鍵值對(duì)所在的范圍。
emplace()	//向容器中添加新鍵值對(duì),效率比 insert() 方法高。
emplace_hint()	//向容器中添加新鍵值對(duì),效率比 insert() 方法高。
insert() 	//向容器中添加新鍵值對(duì)。
erase()	//刪除指定鍵值對(duì)。
clear() 	//清空容器,即刪除容器中存儲(chǔ)的所有鍵值對(duì)。
swap()	//交換 2 個(gè) unordered_map 容器存儲(chǔ)的鍵值對(duì),前提是必須保證這 2 個(gè)容器的類(lèi)型完全相等。
bucket_count()	//返回當(dāng)前容器底層存儲(chǔ)鍵值對(duì)時(shí),使用桶(一個(gè)線(xiàn)性鏈表代表一個(gè)桶)的數(shù)量。
max_bucket_count()	//返回當(dāng)前系統(tǒng)中,unordered_map 容器底層最多可以使用多少桶。
bucket_size(n)	//返回第 n 個(gè)桶中存儲(chǔ)鍵值對(duì)的數(shù)量。
bucket(key)	//返回以 key 為鍵的鍵值對(duì)所在桶的編號(hào)。
load_factor()	//返回 unordered_map 容器中當(dāng)前的負(fù)載因子。負(fù)載因子,指的是的當(dāng)前容器中存儲(chǔ)鍵值對(duì)的數(shù)量(size())和使用桶數(shù)(bucket_count())的比值,即 load_factor() = size() / bucket_count()。
max_load_factor()	//返回或者設(shè)置當(dāng)前 unordered_map 容器的負(fù)載因子。
rehash(n)	//將當(dāng)前容器底層使用桶的數(shù)量設(shè)置為 n。
reserve()	//將存儲(chǔ)桶的數(shù)量(也就是 bucket_count() 方法的返回值)設(shè)置為至少容納count個(gè)元(不超過(guò)最大負(fù)載因子)所需的數(shù)量,并重新整理容器。
hash_function()	//返回當(dāng)前容器使用的哈希函數(shù)對(duì)象。

查找元素是否存在

若有unordered_map <int, int> mp;查找x是否在map中

方法1:  若存在   mp.find(x) != mp.end()
方法2:  若存在   mp.count(x) != 0

類(lèi)

c++中當(dāng)定義類(lèi)對(duì)象是指針對(duì)象時(shí)候,就需要用到 -> 指向類(lèi)中的成員;
當(dāng)定義一般對(duì)象時(shí)候時(shí)就需要用到 “.” 指向類(lèi)中的成員。
例如:

class A
{  
    public play();
}

如果定義如下:

A *p則使用:p->play(); 左邊是結(jié)構(gòu)指針。

A p 則使用:p.paly(); 左邊是結(jié)構(gòu)變量。

總結(jié):

箭頭(->):左邊必須為指針;

點(diǎn)號(hào)(.):左邊必須為實(shí)體。

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法

    關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法

    本文主要介紹了關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字

    用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • vc中使用SendMessage自定義消息函數(shù)

    vc中使用SendMessage自定義消息函數(shù)

    這篇文章主要介紹了vc中使用SendMessage自定義消息函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • 基于Qt和Opencv實(shí)現(xiàn)二維碼解析

    基于Qt和Opencv實(shí)現(xiàn)二維碼解析

    這篇文章主要為大家詳細(xì)介紹了如何利用?Qt?和?OpenCV?實(shí)現(xiàn)一個(gè)可從視頻和圖片中檢測(cè)二維碼的軟件,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • C語(yǔ)言static修飾函數(shù)詳細(xì)解析

    C語(yǔ)言static修飾函數(shù)詳細(xì)解析

    以下是對(duì)C語(yǔ)言中的static修飾函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • 淺談C++虛重載操作符 virtual operator= 的使用方法

    淺談C++虛重載操作符 virtual operator= 的使用方法

    下面小編就為大家?guī)?lái)一篇淺談C++虛重載操作符 virtual operator= 的使用方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C++學(xué)習(xí)貝葉斯分類(lèi)器實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別示例解析

    C++學(xué)習(xí)貝葉斯分類(lèi)器實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別示例解析

    這篇文章主要介紹了在C++學(xué)習(xí)中如何采用貝葉斯分類(lèi)器來(lái)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別的示例及解析有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • C語(yǔ)言中switch語(yǔ)句基本用法實(shí)例

    C語(yǔ)言中switch語(yǔ)句基本用法實(shí)例

    switch的中文翻譯是開(kāi)關(guān),顧名思義,開(kāi)關(guān)的作用就是控制連通或者中斷,在C語(yǔ)言中switch語(yǔ)句的作用也是大同小異,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中switch語(yǔ)句基本用法的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Qt使用QSoundEffect類(lèi)實(shí)現(xiàn)播放音效或音樂(lè)

    Qt使用QSoundEffect類(lèi)實(shí)現(xiàn)播放音效或音樂(lè)

    這篇文章主要為大家詳細(xì)介紹了Qt如何使用QSoundEffect類(lèi)實(shí)現(xiàn)播放音效或音樂(lè)功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-12-12
  • win10中的dlib庫(kù)安裝過(guò)程

    win10中的dlib庫(kù)安裝過(guò)程

    這篇文章主要介紹了win10中dlib庫(kù)的安裝過(guò)程,本文通過(guò)實(shí)例圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

滕州市| 易门县| 寿阳县| 永宁县| 东阿县| 盐边县| 清镇市| 富阳市| 招远市| 道孚县| 永安市| 定远县| 阿图什市| 晋中市| 济南市| 宝兴县| 客服| 洛扎县| 阿拉善盟| 土默特左旗| 西乌珠穆沁旗| 海原县| 康保县| 墨江| 遵义县| 曲松县| 织金县| 陈巴尔虎旗| 志丹县| 镇原县| 同江市| 永丰县| 营口市| 家居| 沧州市| 阿拉善盟| 宝坻区| 陕西省| 平舆县| 吉隆县| 稷山县|