计算机创新协会冬令营——暴力枚举题目06

news2024/11/19 11:21:02

我给大家第一阶段的最后一道题就到这里了,下次得过段时间了。所以这道题简单一点。但是足够经典

下述题目描述和示例均来自力扣:两数之和

题目描述

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

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


示例

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

Java解法一:我反手就是for暴力

其实暴力的思路很简单,直接第一个for保存当前数值,然后第二个for将除了当前数的其他数全部和这个数试一遍

合适直接返回,不合适接着for直到完全不合适返回空数组。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        //我反手看见就是暴力
        //第一个for获取第一个数
        for (int i = 0; i < nums.length; i++) {
            //第二个for获取第二个数
            //i + 1是因为不能是同一个数相加得target
            for (int j = i + 1; j < nums.length; j++) {
                //判断是否位目标数
                if (nums[i] + nums[j] == target){
                    //为目标数
                    return new int[]{i,j};
                }
            }
        }
        //这里说明没有符合的答案,返回空数组
        return new int[]{};
    }
}

可以看出来时间还是花的挺多只超过了23.36%的man,这根本没有打败全世界的人啊nononononononononononononononononononononononononononononononononononono!!

next

Java解法二:采用Map集合作为哈希表

map集合的key-value数据结构就真的就是适合这个题吗?嗯?咋一看这玩意儿和这道题有啥关系。仔细一想呢。

我们需要X + Y = target 对吧,可以知道有X = target - Y 对吧,那么,如果当前取到的X,我们又恰好知道Y的存在,是不是直接就起飞了。好的ヽ( ̄▽ ̄)و,确实起飞了bro

采用map集合,key用于存储这个数,后面的value用于存储他的数组索引,然后采用一层for循环,每次取到这个值X,看一下map里有没有对应Y,使他们相加是target,有返回两个的value,没有加入map集合。这样的话,双层for 的O(n^{2})的时间复杂度就变成了O(n^{})了。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        //采用Map集合
        Map<Integer,Integer> map = new HashMap<>();
        //进入循环查找
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target - nums[i])){
                //包含取value
                Integer value = map.get(target - nums[i]);
                return new int[]{i,value};
            }else {
                //不包含,将其加入map
                map.put(nums[i], i);
            }
        }
        return new int[]{};
    }
}

不是,我有点无语,这玩意儿怎么还有人能比这还快啊,不理解不理解!!!!!!!!t

但是还是提升了50多倍。


C语言解法

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
    int* result = (int*)malloc(2 * sizeof(int));
    *returnSize = 0;

    for (int i = 0; i < numsSize; i++) {
        for (int j = 0; j < numsSize; j++) {
            if (nums[i] + nums[j] == target && i != j) {
                result[0] = i;
                result[1] = j;
                *returnSize = 2;
                return result;
            }
        }
    }

    return result;
}

结语

结语就是我很烦,我又尝试了无数次,表面优化了无数次,还是不行,行吧,接收事实了┭┮﹏┭┮

我的意思是:最后我又多次尝试抓紧你,可是最后还是和你迷失在成长的路里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAVER: Cross-Modal View-Mixed Transformer for Bi-Modal Salient Object Detection

目录 一、论文阅读笔记&#xff1a; 1、摘要&#xff1a; 2、主要贡献点&#xff1a; 3、方法&#xff1a; 3.1 网络的总体框架图&#xff1a; 3.2 Transformer-based Information Propagation Path (TIPP) 3.3 Intra-Modal/Cross-Scale Self-Attention (IMSA/CSSA) Q1…

谷歌Google插件离线导出、安装

离线导出&#xff1a; 1.进入当前用户路径下&#xff1a; %userprofile%\AppData\Local\Google\Chrome\User Data\Default\Extensions 2.详情查看ID,即对应上述文件夹路径下插件文件名&#xff01; 3.压缩成ZIP包! 离线导入&#xff1a; 1.打开开发者模式 2.导入上述解压的压…

MySQL基础笔记(5)DCL数据控制语句

数据控制语句&#xff0c;用来管理数据库用户、控制数据库的访问权限~ 目录 一.用户管理 1.查询用户 2.创建用户 3.修改用户密码 4.删除用户 二.权限管理 1.查询权限 2.授予权限 3.撤销权限 一.用户管理 1.查询用户 use MySQL; select * from user; 2.创建用户 crea…

【C/C++】轻量级跨平台 开源串口库 CSerialPort

文章目录 1、简介2、支持的平台3、已经支持的功能4、Linux下使用5、使用vcpkg安装CSerialPort6、交叉编译7、效果图8、基于CSerialPort的应用8.1、CommMaster通信大师8.2、CommLite串口调试器 1、简介 Qt 的QSerialPort 已经是跨平台的解决方案&#xff0c;但Qt开发后端需要 Q…

高性价比的高速吹风机/高速风筒解决方案,基于普冉单片机开发

高速吹风机是今年非常火的一款产品&#xff0c;快速崛起并颠覆了传统吹风机&#xff0c;高速吹风机也成为了传统吹风机替代的一个大趋势。高速吹风机是利用高转速产生的大风量来快速吹干头发&#xff0c;由于其精巧的外观设计、超低的噪声、出色的干发效果&#xff0c;高速吹风…

篇二:springboot2.7 OAuth2 server使用jdbc存储RegisteredClient

上一篇 <<springboot 2.7 oauth server配置源码走读一>>中简单描述了oauth2 server的配置&#xff0c;其中使用了内存保存 RegisteredClient&#xff0c;本篇改用mysql存储。 db存储需要创建表&#xff0c;表结构应该是什么样的呢&#xff0c;从spring给我们封装好…

国际光伏展

国际光伏展是一个专门展示和推广光伏技术和产品的国际性展览会。光伏技术是一种利用光能转化为电能的技术&#xff0c;被广泛应用于太阳能发电系统和其他可再生能源系统中。国际光伏展汇集了来自全球的光伏企业、研究机构和专业人士&#xff0c;展示最新的光伏产品、技术和解决…

量子经济应用新道路!德国旗舰项目PlanQK首次公布研究成果

&#xff08;图片来源&#xff1a;网络&#xff09; 作为人工智能创新竞赛的一部分&#xff0c;由量子开放平台和生态系统公司Anaqor AG与斯图加特大学牵头、联邦经济事务和气候保护部资助的PlanQK研究项目&#xff0c;经过四年的深入研究&#xff0c;于近期公布了其研究成果&…

圣诞节来临,如何用海外云手机给亚马逊店铺引流?

马上就要到圣诞节了&#xff0c;这是一年中冲刺销售量的最后一个好机会&#xff0c;对所有亚马逊卖家都十分重要。而无论是亚马逊新手卖家还是老卖家&#xff0c;要想在激烈的竞争中取胜&#xff0c;仅仅靠产品本身是不现实的&#xff0c;通过测评和社媒引流获取更多曝光和流量…

如何使用 NFTScan NFT API 在 PlatON 网络上开发 Web3 应用

PlatON 是由万向区块链和矩阵元主导开发的面向下一代的全球计算架构&#xff0c;创新性的采用元计算框架 Monad 和基于 Reload 覆盖网络的同构多链架构&#xff0c;其愿景是成为全球首个提供完备隐私保护能力的运营服务网络。它提供计算、存储、通讯服务&#xff0c;并提供算力…

淘宝以图搜商品API调用详细步骤(apiKeysecret)

以图片来搜索商品是电商平台常见的一个功能&#xff0c;一般用于搜索同款、找爆品、淘宝拍立淘等功能。 通过item_search_img可以实现通过图片来搜索同款商品列表&#xff0c;响应参数包括宝贝标题、列表类型、宝贝图片、优惠价、价格、销量、宝贝ID、商品风格标识ID、掌柜昵称…

数据结构—图(上)

文章目录 12.图(上)(1).图的基本概念#1.图的基本定义#2.边的分类#3.数据结构的一些规定#4.子图#5.完全图#6.路径#7.连通性和连通分量#8.度 (2).图的存储方式#1.邻接矩阵#2.邻接表 (3).图的遍历#1.深度优先搜索(Depth First Search)i.走个迷宫ii.DFS的思想iii.代码实现 #2.广度优…

Linux:apache优化(3)—— 页面缓存时间

作用&#xff1a;通过 mod_expires 模块配置 Apache&#xff0c;使网页能在客户端浏览器缓存一段时间&#xff0c;以避免重复请求&#xff0c;减轻服务端工作压力。启用 mod_expires 模块后&#xff0c;会自动生成页面头部信息中的 Expires 标签和 CacheControl 标签&#xff0…

COCO Dataset Format

COCO (Common Objects in Context) dataset数据集是一个广泛应用于目标检测、语义分割的数据集&#xff0c;包含330K 图片数据 与 2.5 million 个目标实体。 1.数据集下载 !wget http://images.cocodataset.org/zips/train2017.zip -O coco_train2017.zip !wget http://image…

宝塔面板yum安装指南

1、执行 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec2、QA 提示抱歉&#xff0c;连接宝塔官网失败&#xff0c;请切换节点后重试服务器终端 分别执行这2条命令 mv /www/server/pa…

1.4 day4 IO进程线程

使用两个子进程进行文件拷贝&#xff0c;父进程进行资源回收 #include <myhead.h> int main(int argc, const char *argv[]) {//创建一个文件描述符并以只读的方式打开int fd-1;if((fdopen("./test.bmp",O_RDONLY))-1){perror("open error");return…

私有云平台搭建openstack和ceph结合搭建手册

OpenStack与云计算 什么是云&#xff1f; 如何正确理解云&#xff0c;可以从以下几个方面。 云的构成。 用户&#xff1a;对用户而言是透明无感知的&#xff0c;不用关心底层构成&#xff0c;只需要知道利用云完成自己任务即可。 云提供商&#xff1a;对云资产管理和运维。 云…

高并发下的计数器实现方式:AtomicLong、LongAdder、LongAccumulator

一、前言 计数器是并发编程中非常常见的一个需求&#xff0c;例如统计网站的访问量、计算某个操作的执行次数等等。在高并发场景下&#xff0c;如何实现一个线程安全的计数器是一个比较有挑战性的问题。本文将介绍几种常用的计数器实现方式&#xff0c;包括AtomicLong、LongAd…

工业城市的废水监控系统

前言 很多工业城市的废水排放量较大&#xff0c;已造成城市地表水的严重污染。各城市的环境监测中心站肩负着对城市地表环境水质及污染源排放废水的监测工作&#xff0c;很多城市相继形成了以市站为网头&#xff0c;与区站、行业站构成一体的废水监测网。 为提高水质监测能力建…

【Java】RuoYi-Vue-Plus 多数据源整合TDengine时序数据库——服务端自动建库建表

目录 环境准备整合TDengine 数据源1. 添加驱动依赖2. 添加数据源配置3. 添加Mapper4. 添加建表sql脚本5. Controller 测试效果 环境准备 RuoYi-Vue-Plus v5.1.2JDK17Maven 3.6.3Redis 5.XMySQL 5.7TDengine 2.6.0.34 客户端 整合TDengine 数据源 1. 添加驱动依赖 注意&…