leedcode刷题笔记day1

题目大意:
在这里插入图片描述

暴力解法
两个for循环(也是我一看到题目想到的方法)

枚举在数组中所有的不同的两个下标的组合逐个检查它们所对应的数的和是否等于 target
复杂度分析
时间复杂度:O(n2),这里 n 为数组的长度
空间复杂度:O(1),只用到常数个临时变量

// public class Solution {
//     public int[] twoSum(int[] nums,int target) {
//         int len = nums.length;//         for (int i=0; i < len-1; i++){
//             for (int j = i + 1; j < len; j++){
//                 if (nums[i] + nums[j] == target){
//                     return new int[]{i,j};
//                 }
//             }
//         }//         throw new IllegalArgumentException("No two sum solution");
//     }
// }

使用哈希表
为了省去一层循环–>以空间换时间
在这里插入图片描述
它的逻辑就是首先让6这个key以及对应的下标value存入哈希表,然后接下来的一个元素是3,与其对应的元素就是8-3=5,而5不在目前的哈希表中,所以将3以及对应下标存入哈希表中,接下来是8,8-8=0,0也不在哈希表中,将8以及对应下标存入哈希表中,接下来是元素2,8-2=6,6在哈希表中,因此2和6就是我们要找的元素,将他们的下标【0,3】返回输出,算法结束。
在这里插入图片描述

import java.util.HashMap;
import java.util.Map;public class Solution {public int[] twoSum(int[] nums,int target){int len = nums.length;Map<Integer,Integer> hashMap = new HashMap<>(len - 1);hashMap.put(nums[0],0);for (int i = 1;i < len;i++){int another = target - nums[i];if (hashMap.containsKey(another)){return new int[]{i,hashMap.get(another)};}hashMap.put(nums[i],i);}throw new IllegalArgumentException("No two sum solution");}
}

在这里插入图片描述
看见的一个比较有意思的解法
从人工推导到编程实现的过程~

代码块
class Solution(object):def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""# 遍历列表for i in range(len(nums)):# 计算需要找到的下一个目标数字res = target-nums[i]# 遍历剩下的元素,查找是否存在该数字if res in nums[i+1:]:# 若存在,返回答案。这里由于是两数之和,可采用.index()方法# 获得目标元素在nums[i+1:]这个子数组中的索引后,还需加上i+1才是该元素在nums中的索引return [i, nums[i+1:].index(res)+i+1]作者:从前的我——再次回归
链接:https://leetcode.cn/problems/two-sum/solutions/1463966/jian-dan-python-by-chanemo-muld/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

python哈希表比官方分高!!!官方的哈希表才击败80%,而且比官方的容易懂!

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:n = len(nums)mp = {}for i in range(n):t = target - nums[i]if t in mp:return [mp[t], i]# 存放nums[i]mp[nums[i]] = ireturn []

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新定义51单片机(RD8G37)实现测距测速仪

本文描述用新定义51单片机&#xff08;RD8G37&#xff09;超声波一体测距传感器实现简单的测距测速仪。 测距仪演示效果 新定义RD8G37Q48RJ开发板 超声波测距模块&#xff1a; 8位并口屏 1、main.c unsigned short timeConsuming0; unsigned int oldDistance;void rectClearS…

Javascript,到底要不要写分号?

小白随机在互联网上乱丢一些赛博垃圾&#xff0c;还望拨冗批评斧正。 要不要加分号&#xff1f; 先说结论&#xff1a;“不引起程序出错的前提下&#xff0c;加不加都可以&#xff0c;按自身习惯来。” 为什么JS可以不加分号&#xff1f; 实际上&#xff0c;行尾使用分号的风…

解决方案|镭速赋能影视行业数字化,电影高速分发技术打造一流传输体验!

中国电影产业链主要分为三部分&#xff0c;即上游制片&#xff0c;中游宣发&#xff0c;下游院线影院&#xff0c;互联网产业发展后衍生出线上票务平台作为产业终端。随着4K、3D、高帧率、高动态范围、广色域、沉浸式音频等新兴视听技术的发展与应用&#xff0c;高新技术格式电…

stm32内存分配博客笔记

原文&#xff1a; stm32内存分配 笔记&#xff1a; 1、向量表与代码段&#xff1b;根据Cortex-M3权威指南描述&#xff0c;系统复位后&#xff0c;在向量表异常0处保存的是堆栈起始地址&#xff0c;而后紧跟中断向量表 2、可以从链接脚本.ld文件中看到终端向量表第一个被链接…

Date,SimpleDateFormate类和Calendar类

目录 一、Date 二、SimleDateFormate类 作用 练习一 练习二 三、Calendar类 概述 Calendar小结 一、Date 构造方法说明public Date()创建Date对象&#xff0c;表示一个时间public Date(long date)创建Date对象&#xff0c;表示指定时间public void setTime(long time)设置…

服务器变矿机,该如何应对?

开始 恶意的挖矿程序会导致服务器cpu的异常占用&#xff0c;很让人讨厌。起初&#xff0c;我只是使用top命令显示出占用cpu不正常的进程&#xff0c;发现其中一个进程占用了百分之九十九点几&#xff0c;然后通过kill -9 <PID>命令干掉它。但总是过不了几天&#xff0c;…

VRPSolverEasy:支持VRP问题快速建模的精确算法Python包

文章目录 前言一步步安装免费版主要模块介绍1. depot point2. customer point3. links4. vehicle type VRPTW 算例数据说明模型建立输出求解状态及结果 前言 VRPSolverEasy 是用于车辆路径问题&#xff08;VRP&#xff09;的最先进的分支切割和定价算法求解器1&#xff0c;它的…

[二]rtmp服务器搭建

[二]rtmp服务器搭建 一.测试二.使用Nginx搭建自己的rtmp服务器1.nginx是什么&#xff1f;2.环境准备 三、搭建过程1.安装编译 nginx 所需要的库2.下载 nginx-1.21.6.tar.gz3.下载 nginx-rtmp-module 4.解压5.编译6.启动nginx&#xff0c;检测nginx是否能成功运行7.配置nginx使用…

易飞ERP抛转钉钉签核,并自动审核易飞单据

支持易飞ERP所有单据送签到钉钉 &#xff08;v: rainholy&#xff09; 1、钉钉界面 2、易飞ERP单据配置 3、钉钉审批完后&#xff0c;自动审核易飞ERP单据

66.Go从零搭建一个orm框架【简版】

文章目录 一&#xff1a;前置学习1、 为什么要用orm2、Golang里面是如何原生连接MySQL的3、ORM框架构想 二: 开始造1、连接Connect2、设置/读取表名Table/GetTable3、新增/替换Insert/Replace4、条件Where5、条件OrWhere6、删除Delete7、修改Update8、查询9、设置查询字段Field…

AVL树 -- C++实现

AVL树 – C实现 1. AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1…

模具制造企业ERP系统有哪些?企业怎么选型适配的软件

模具的生产管理过程比较繁琐&#xff0c;涵盖接单报价、车间排期、班组负荷评估、库存盘点、材料采购、供应商选择、工艺流转、品质检验等诸多环节。 有些采用传统管理手段的模具制造企业存在各业务数据传递不畅、信息滞后、不能及时掌握订单和车间生产情况&#xff0c;难以对…