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

哈尔滨模板网站建站珠海企业网站制作费用

哈尔滨模板网站建站,珠海企业网站制作费用,哪里有网站可以做动态视频倒计时,php招聘网站建设遇到的问题都有解决的方案,希望我的博客可以为你提供一些帮助 一、哈希策略优化两数和问题 题目地址:1. 两数之和 - 力扣(LeetCode)https://leetcode.cn/problems/two-sum/description/ 思路分析: 题目要求在一个整型…

遇到的问题都有解决的方案,希望我的博客可以为你提供一些帮助

一、哈希策略优化两数和问题

题目地址:1. 两数之和 - 力扣(LeetCode)https://leetcode.cn/problems/two-sum/description/

 思路分析:

题目要求在一个整型数组nums中找到两个数(不能是自己)的和满足所给的目标值target,其实就是需要对这个整型数组进行两次遍历,判断对于每个数组元素nums[i],是否存在target-nums[i]在这个整型数组里边。

于是就有了第一种解法:

解法一:暴力枚举法

外循环确定当前元素nums[i],内循环在当前元素后寻找使nums[i]值为target的补数target-nums[i],

为什么内循环需要在当前元素后寻找呢?这就像相亲一样,首先不和自己本身相亲(满足一个数不能重复使用)其次如果0号和1号元素相亲后发现不合适(外层第一次循环)那么1号和0号元素就没有必要再相亲一次(外层第二次循环)。

时间复杂度:双循环O(n^{2})

空间复杂度:无额外的空间开销O(1)

class Solution {public int[] twoSum(int[] nums, int target) {for(int i=0;i<nums.length;i++){for(int j=i+1;j<nums.length;j++)if((nums[i]+nums[j])==target)return new int []{i,j};}return new int[0];}
}

解法二:哈希表法 

 如何去优化呢?在方法一中我们可以发现它的本质是两层遍历数组进行查找,外循环的目的是枚举出每一个数组元素,内循环的目的是找到对应的补数。对于外循环我们无法优化,因为它的目的是枚举出每一个数组元素,无论如何去优化它,时间复杂度始终都是O(n)。其次我们考虑内循环是否可以优化?首先内循环完成的是一个什么任务呢?内循环需要在数组中查找数组元素的补数,抽象一下就是说内循环需要判断出在一个数组内是否有某一个元素。然后,我们需要思考的是有哪些方法可以快速判断出一个数组中是否有某一个元素呢?遍历?有比遍历更快的吗?哈希表?因为哈希表 有个O(1) 的查询特性。

时间复杂度:哈希表优化的内循环O(n)

空间复杂度:哈希表有空间开销O(n)

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> numberTable=new HashMap <Integer,Integer>();for(int i=0; i<nums.length; ++i){//查找nums[i]的补数if(numberTable.containsKey(target-nums[i]))return new int[] {i,numberTable.get(target-nums[i])};numberTable.put(nums[i],i);//为啥numberTable.put(nums[i],i);写在这里,//而不是先在循环外建立一个哈希表然后把每一个数组元素先放进去呢?//因为其实每一组符合要求的数其实有两次比较的机会,//比如x的下标为5,它的补数的下标为10,//循环遍历到x的时候发现哈希表内没找到x的补数,//直接把x存入哈希表,到10的时候因为X在哈希表内所以成功。//最好的情况下这种方式更节约空间}return new int[0];}
}

http://www.dtcms.com/a/423300.html

相关文章:

  • 莱芜网站优化企业内训
  • Linux服务器NAS挂载:Truenas
  • 【图像处理-基础知识】SFIT特征解析
  • 基于杰理AC6321A2做加热产品
  • 最流行的做网站语言合优人才网合川
  • gRPC从0到1系列【8】
  • 阿里-FORGE-生成式推荐SID构建
  • Python脚本(Kafka生产者+消费者)
  • 光伏出海加速!中国企业抢占全球市场
  • 网站排名提升软件网站制作先做数据库还是前台
  • 上海工程咨询行业协会网站优化内链怎么做
  • 基于 Vue 3 + TypeScript + TSX + Naive UI 的数据渲染后台管理系统模板开发方案
  • PostgreSQL向量检索:pgvector入门指南
  • 日本复古电影风格街拍人像摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • STM32CUBEMX + STM32L051C8T6 + RTC实时时钟 + 闹钟定时唤醒 + 周期唤醒 + STANDBY模式RTC唤醒
  • Redis高可用架构设计:主从复制、哨兵、Cluster集群模式深度对比
  • 网站上线需要哪些步骤站长 网站对比
  • 网站定制的销售情况桂林人网
  • 国外免费网站模板在哪里可以改动网站标题
  • 【笔记】在WPF中 BulletDecorator 的功能、使用方式并对比 HeaderedContentControl 与常见 Panel 布局的区别
  • 13. 初识 NVMe over RDMA
  • 分词和词向量的学习记录
  • QML学习笔记(二十)QML的自定义信号
  • 青岛网站建设方案咨询注册网站时审核是人工审核吗还是电脑审核
  • 【星海出品】直接映射方式
  • LeetCode 7.整数反转
  • 网站开发目前用的是什么语言seo相关ppt
  • C++ 函数指针、回调与 Lambda 全解析
  • UNIX下C语言编程与实践4-UNIX 编程环境搭建:三种安装方式(本机、虚拟机、网络终端)对比与实操
  • 辽宁平台网站建设公司万维网站注册