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

leetcode刷题日记——两数之和

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 题目要求 nums 中能够组成和为 target 的两个数的下标
  • 解法一:暴力求解,直接两两匹配求解
  • 时间复杂度O(n2),空间复杂度O(1)
    在这里插入图片描述
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {int* res=(int*)malloc(sizeof(int)*2);for(int i=0;i<numsSize-1;i++){for(int j=i+1;j<numsSize;j++){if(nums[i]+nums[j]==target){res[0]=i;res[1]=j;*returnSize=2;return res;}}}return NULL;
}
  • 解法二:快排+双指针,先对数组进行快速排序,然后利用双指针求出组成 target 的两个数,然后再去遍历原数组,求出这两个数的下标
  • 时间复杂度O(Nlogn),空间复杂度O(n)
    在这里插入图片描述
int cmp(const void *a, const void *b) {return (*(int*)a - *(int*)b);
}int* twoSum(int* nums, int numsSize, int target, int* returnSize) {int left=0,right=numsSize-1;int* res=(int*)malloc(sizeof(int)*2);res[0]=-1,res[1]=-1;int* temp=(int*)malloc(sizeof(int)*numsSize);memcpy(temp, nums, sizeof(int) * numsSize);qsort(temp, numsSize, sizeof(int), cmp);while(left<right){if(temp[left]+temp[right]==target){break;}else if(temp[left]+temp[right]>target){right--;}else{left++;}}for (int i=0; i<numsSize;i++) {if (nums[i]==temp[left] && res[0]==-1) {res[0]=i;} else if(nums[i]==temp[right] && res[1]==-1) {res[1]=i;}if (res[0]!=-1 && res[1]!=-1) break;}*returnSize=2;return res;
}

[ 官方题解 ]:

  • 一、暴力枚举,如一
  • 二、哈希表:创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:hashtable = dict()for i, num in enumerate(nums):if target - num in hashtable:return [hashtable[target - num], i]hashtable[nums[i]] = ireturn []
http://www.xdnf.cn/news/588.html

相关文章:

  • Linux——firewalld防火墙
  • 2021-11-10 C++蜗牛爬井进3退1求天数
  • 【C++算法】63.字符串_二进制求和
  • 深度解析AI大模型中的模型微调技术:从基础到实践
  • 知识就是力量——一些硬件的使用方式
  • 第二十七讲:AI+农学导论
  • Python基于知识图谱的医疗问答系统【附源码、文档说明】
  • python基础知识点(3)
  • JAVA学习-多线程
  • linux查看目录相关命令
  • Linux系统中的网络传输、网络管理以及软件仓库的构建
  • @EnableAsync+@Async源码学习笔记之四
  • 2025年第十五届MathorCup数学应用挑战赛D题论文全网首发
  • MSCKF——运动方程IMU状态递推(Propagation)
  • 深度补全网络:CSPN++ 有哪些开源项目
  • 2025华中杯挑战赛B题【单车调度】原创论文讲解
  • docker 搭建nacos 2.2.1版本单机版
  • 国产SMT贴片机自主技术突破解析
  • A股周度复盘与下周策略 的deepseek提示词模板
  • Unreal 从入门到精通之如何接入MQTT
  • 【开发心得】Dify部署ollama模型的坑[8]
  • 【漫话机器学习系列】210.标准化(Standardization)
  • [Java · 初窥门径] Java 注释符
  • DEV-c++怎么免打头文件中英文切换
  • c语言中的原,反,补码
  • PyTorch 深度学习实战(38):注意力机制全面解析(从Seq2Seq到Transformer)
  • “劣币驱逐良币”与“U型锁”刍议
  • Linux中的软件管理
  • 解决Windows update服务启动拒绝访问的问题 | wuauserv 注册表拒绝访问的方法
  • Sleuth+Zipkin 服务链路追踪