iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0
佛心分享-刷題不只是刷題

只是單純想刷題XD系列 第 1

只是單純想刷題XD Day 1

  • 分享至 

  • xImage
  •  

既然是第一天那肯定是從我們的第一題開始做起的啦~

題目


Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

題目翻譯

從 nums 中找到兩個數字,其相加結果等於 target,並返回這兩個數字的索引值,組成一個容器(可以是 List 或 Object)。根據題目的限制和敘述,可以推斷只會有唯一一組符合條件的解,且沒有強制要求結果的返回順序。

解題步驟

1.初始化一個空的向量 ans,用來存儲結果。
2.初始化一個空的哈希表 hash,用來存儲數字與它們對應的目標值互補。
3.遍歷數組:
如果 hash 中已經存在當前數字 nums[i],那麼這意味著在之前的迭代中,我們已經找到了這個數字的互補值。
如果 hash 中不存在當前數字,那麼將 target - nums[i] 作為鍵、當前索引 i 作為值存入哈希表,等待後續找到與其匹配的數字。
4.最後,一旦找到兩個數字,返回它們的索引值。

code

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> hash; // 用於記錄數字的互補值及其索引
        for (int i = 0; i < nums.size(); i++) {
            int complement = nums[i]; // 當前數字
            if (hash.find(complement) != hash.end()) {
                // 找到互補值時,直接返回索引結果
                return {i, hash[complement]};
            }
            hash[target - complement] = i; // 儲存互補值與當前索引
        }
        return {}; // 如果未找到符合條件的配對,返回空容器
    }
};

那麼今天就先講解到這邊~明天開始會進入medium難度哈哈哈


下一篇
只是單純想刷題XD Day2
系列文
只是單純想刷題XD30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言