当前位置: 首页 > wzjs >正文

深圳福田疫情合肥网站建设优化

深圳福田疫情,合肥网站建设优化,做美容一般在哪个网站团购比较好,网站建设的费用是不是含税的“两数之和”(Two Sum)是一道非常经典的算法题目,几乎是算法入门和面试准备的必做题之一。它的经典性体现在以下几个方面: 1. 算法入门的基础题目 这道题目是许多初学者接触 哈希表(Hash Table) 或 字典&…

“两数之和”(Two Sum)是一道非常经典的算法题目,几乎是算法入门和面试准备的必做题之一。它的经典性体现在以下几个方面:

1. 算法入门的基础题目

这道题目是许多初学者接触 哈希表(Hash Table)字典(Dictionary) 的第一个应用场景。
它帮助初学者理解如何通过空间换时间,将时间复杂度从暴力解法的 O ( n 2 ) O(n^2) O(n2) 优化到 O ( n ) O(n) O(n)

2. 面试中的高频题目

在技术面试中,这道题目经常被用作考察候选人对哈希表的理解和应用能力。面试官可能会通过这道题目进一步延伸,考察候选人对边界条件、代码实现细节以及优化思路的掌握。

3. 多种解法,适合不同阶段的练习

这道题目有多种解法,适合不同阶段的练习:

  • 暴力解法:双重循环,时间复杂度 O ( n 2 ) O(n^2) O(n2),空间复杂度 O ( 1 ) O(1) O(1)
  • 哈希表优化:时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)
  • 排序 + 双指针:时间复杂度 O ( n l o g n ) O(n log n) O(nlogn),空间复杂度 O ( 1 ) O(1) O(1)(但需要额外空间存储索引)。

通过这些解法,可以逐步提升对算法和数据结构的理解。

4. 问题变种的基石

“两数之和”是许多更复杂问题的基础,例如:

  • 三数之和(3Sum):在数组中找出三个数,使它们的和等于目标值。
  • 四数之和(4Sum):在数组中找出四个数,使它们的和等于目标值。
  • 两数之和 II - 输入有序数组:数组已排序,要求使用双指针解决。
  • 两数之和 IV - 输入二叉搜索树:在二叉搜索树中寻找两数之和。

这些问题都可以从“两数之和”的思路中延伸出来。

5. 实际应用场景

“两数之和”的思想在实际开发中也有广泛应用,例如:

  • 查找匹配项:在数据库中查找满足某种条件的两个记录。
  • 缓存优化:通过哈希表快速查找缓存中的数据。
  • 金融领域:在股票市场中寻找两笔交易,使它们的收益等于目标值。

1. Two Sum

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.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

C++ 代码实现

#include <vector>
#include <unordered_map>using namespace std;vector<int> twoSum(vector<int>& nums, int target) {// 创建一个哈希表,用于存储数字及其对应的索引unordered_map<int, int> num_to_index;// 遍历数组for (int i = 0; i < nums.size(); i++) {int complement = target - nums[i]; // 计算当前数字的补数// 检查补数是否在哈希表中if (num_to_index.find(complement) != num_to_index.end()) {// 如果找到补数,返回补数的索引和当前索引return {num_to_index[complement], i};}// 如果没有找到补数,将当前数字及其索引存入哈希表num_to_index[nums[i]] = i;}// 如果没有找到解(题目保证有解,这里只是占位)return {};
}

代码说明

  • 哈希表的使用:
    • 使用 unordered_map<int, int> 来存储数字及其对应的索引。
    • 键(key)是数组中的数字,值(value)是该数字的索引。
  • 遍历数组:
    • 使用 for 循环遍历数组 nums
    • 对于每个数字 nums[i],计算其补数 complement = target - nums[i]
  • 查找补数:
    • 在哈希表中查找补数 complement
    • 如果找到补数,说明当前数字和补数相加等于目标值,返回它们的索引。
    • 如果没找到补数,将当前数字及其索引存入哈希表。
  • 返回结果:
    • 题目保证有解,因此可以直接返回结果。
    • 如果没有找到解(理论上不会发生),返回空向量。

复杂度分析

  • 时间复杂度:
    • O ( n ) O(n) O(n):只需要遍历一次数组,哈希表的查找和插入操作都是 O ( 1 ) O(1) O(1)
  • 空间复杂度:
    • O ( n ) O(n) O(n):哈希表最多存储 n n n 个元素。

总结

这段代码通过哈希表实现了高效的两数之和查找,时间复杂度为 O ( n ) O(n) O(n),空间复杂度为 O ( n ) O(n) O(n),适合处理大规模数据。

http://www.dtcms.com/wzjs/522770.html

相关文章:

  • 18款禁用黄app入口直接看宁波seo网络推广渠道介绍
  • 徐州专业网站制作公司那个推广平台好用
  • 哪些网站可以找到做海报的素材怎么登录百度app
  • 济南网络公司建站网站的seo 如何优化
  • html5 网站建设广告电话
  • 胜利油田局域网主页入口独立站seo
  • 深圳开发公司网站全面网络推广营销策划
  • 怎么做网站开发的方案网站推广的方法有哪些?
  • 做农产品网站需要办什么证长沙seo优化推广公司
  • 沈阳做网站优化免费推广网站大全下载安装
  • 个人与企业签订网站开发合同抖音推广方式有哪些
  • 网站开发承诺函360推广助手
  • 做网站图标按钮素材核心关键词和长尾关键词举例
  • 美食网站html模板app推广拉新工作可靠吗
  • 做爰片免费网站给我看看营销策略国内外文献综述
  • wordpress nginx配置伪静态seo标题优化步骤
  • 门户网站制作哪专业电商seo优化
  • 百姓网站外推广怎么做山东服务好的seo
  • 南昌做网站多少钱网站seo课设
  • 鹿寨县住房和城乡建设局网站贵港seo
  • 无锡企业做网站线上推广的好处
  • 专业仿站网站建设网络推广的优势有哪些
  • 网站后台管理系统页面简述搜索引擎优化
  • 福建设计院网站指数分布
  • 无忧网站建设多少钱seo全网优化指南
  • all import wordpressseo及网络推广招聘
  • 上海网站建设服务是什么申请自己的网站
  • 旅行社网站方案友情链接交易平台
  • 怎么做百度网站贵州seo培训
  • 网站后台无法上传照片网站建站推广