LeetCode第1~5题解

CONTENTS

    • LeetCode 1. 两数之和
    • LeetCode 2. 两数相加
    • LeetCode 3. 无重复字符的最长子串

LeetCode 1. 两数之和

【题目描述】

给定一个整数数组 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]

【提示】

2 ≤ n u m s . l e n g t h ≤ 1 0 4 2\le nums.length\le 10^4 2nums.length104
− 1 0 9 ≤ n u m s [ i ] ≤ 1 0 9 -10^9\le nums[i]\le 10^9 109nums[i]109
− 1 0 9 ≤ t a r g e t ≤ 1 0 9 -10^9\le target\le 10^9 109target109

【分析】


维护一个哈希表,记录 n u m s [ 1 ] ∼ n u m s [ i − 1 ] nums[1]\sim nums[i-1] nums[1]nums[i1],当遍历到 n u m s [ i ] nums[i] nums[i] 时,通过哈希表查找是否存在 t a r g e t − n u m s [ i ] target-nums[i] targetnums[i],如果存在说明找到答案。


【代码】

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> st;for (int i = 0; i < nums.size(); i++){int x = target - nums[i];if (st.count(x)) return { st[x], i };st[nums[i]] = i;}return {};  // 为了防止编译出问题}
};

LeetCode 2. 两数相加

【题目描述】

给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 0 0 之外,这两个数都不会以 0 0 0 开头。

【示例1】

在这里插入图片描述

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

【示例2】

输入:l1 = [0], l2 = [0]
输出:[0]

【示例3】

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

【提示】

每个链表中的节点数在范围 [ 1 , 100 ] [1, 100] [1,100]
0 ≤ N o d e . v a l ≤ 9 0\le Node.val\le 9 0Node.val9
题目数据保证列表表示的数字不含前导零

【分析】


模拟题,遍历两个链表,按照高精度加法的思想逐位相加,直到遍历完两个链表且没有进位即可。构造结果链表时可以先创建一个虚拟头结点,返回的时候返回虚拟头结点的下一个结点即可。


【代码】

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {auto dummy = new ListNode(-1), cur = dummy;  // 虚拟头结点,cur表示当前指向的结点int t = 0;  // 进位while (l1 || l2 || t){if (l1) t += l1->val, l1 = l1->next;if (l2) t += l2->val, l2 = l2->next;cur = cur->next = new ListNode(t % 10);  // 记得要更新cur指向下一个结点t /= 10;}return dummy->next;}
};

LeetCode 3. 无重复字符的最长子串

【题目描述】

给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。

【示例1】

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

【示例2】

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

【示例3】

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是子串的长度,"pwke" 是一个子序列,不是子串。

【提示】

0 ≤ s . l e n g t h ≤ 5 ∗ 1 0 4 0\le s.length\le 5*10^4 0s.length5104
s 由英文字母、数字、符号和空格组成

【分析】


我们枚举所有以 i i i 为尾端点的子串,分别找出最长的不包含重复字符的子串。因此对于每个 i i i,我们需要找到一个最靠左端点的 j j j,使得 j ∼ i j\sim i ji 中不包含重复的字符。现在再假设 i i i 向右移动到 i ′ i' i,显然其对应的 j ′ j' j 一定大于等于 j j j,否则通过反证法, j ′ j' j j j j 的左边且 j ′ ∼ i ′ j'\sim i' ji 中不包含重复的字符,那么 j ′ ∼ i j'\sim i ji 中一定也不包含重复的字符。

综上,我们在枚举 i i i 的时候同样也只需要枚举一遍 j j j,而不需要重复枚举。


【代码】

class Solution {
public:int lengthOfLongestSubstring(string s) {unordered_map<char, int> st;int res = 0;for (int i = 0, j = 0; i < s.size(); i++){st[s[i]]++;while (st[s[i]] > 1) st[s[j++]]--;  // 当j==i时s[i]一定只出现一次了res = max(res, i - j + 1);}return res;}
};

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

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

相关文章

linux下运行win10效果好不好,Win10不好用?继续坚守Win7的人依然巨多

前不久&#xff0c;微软发布消息称Windows 10操作系统市场占有率终于突破50%。而近日&#xff0c;安全厂商卡巴斯基发布的8月下旬最新研究报告也印证了这一点&#xff0c;并且从数据来看&#xff0c;Windows 10系统的占有率还有小幅度的增长&#xff0c;达到了53%左右。 退休时…

其实win10要比win7的安全性强很多

随着win10系统的一步步更新&#xff0c;用户体验度也越来越好&#xff0c;更多的用户也换了win10的系统&#xff0c;但还是有一部分用户依然雷打不动的信任着win7。下面小编来分析一下win7和win10到底有着怎样的差别&#xff0c;相信看完下文&#xff0c;你也会想升级win10系统…

W7-2495X参数 至强W72495X功耗

W7-2495X采用10纳米工艺二十核心四十线程CPU主频 2.6GHz动态加速频率 4.8GHz 热设计功耗(TDP) 225W支持最大内存容量 2TB内存类型 DDR5 4800MHz W7-2495X性能怎么样这些点很重要 http://www.adiannao.cn/du

电脑装了w10没有w7流畅怎么办?

如果我们对自己的电脑进行了系统的重装&#xff0c;在电脑装了win10系统之后发现没有win7流畅的话&#xff0c;很多小伙伴不知道是什么情况应该怎么解决。 那么据微点阅读小编所知可能是我们电脑硬件设施的不兼容所导致的。我们可以在官网上查看win10系统的配置要求是否符合自…

W7-2475X参数 至强W72475X功耗

W7-2475X采用10纳米制作工艺二十核心四十线程CPU主频 2.6GHz动态加速频率 4.8GHz 热设计功耗(TDP) 225W支持最大内存容量 2TB内存类型 DDR5 4800MHz W7-2475X性能怎么样这些点很重要 http://www.adiannao.cn/du

Intel 至强 W7-3465X参数 W73465X功耗

至强 W7-3465X采用10纳米 制作工艺 二十八核心五十六线程CPU主频 2.5GHz动态加速频率 4.8GHz热设计功耗(TDP) 300W支持最大内存容量 4TB 内存类型 DDR5 4800MHz W7-3465X性能怎么样这些点很重要 http://www.adiannao.cn/du

五类造成Windows 7假死的原因及处理

Windows 7虽好&#xff0c;可是小问题不断。从Beta版本至今&#xff0c;很多朋友遇到最严重的问题就是资源管理器偶尔或者经常失去响应&#xff0c;虽然不是什么非重装的问题&#xff0c;但是时不时电脑卡上一段时间&#xff0c;谁都觉得很烦。那么到底Windows 7在哪些情况下会…

高傲的win7

高傲的win7 首先为win7证明&#xff1a;本文内容和本人下载的系统版本以及硬件细节有关&#xff0c;并不能代表所有的win7种族。 好久没有写博客了&#xff0c;主要是因为把很多东西都记录在笔记里边了&#xff0c;但是感觉写博客和笔记还是不太一样&#xff0c;笔记就是随时…

我对windows7简单评论

10月25日受朋友的邀请参加了弘博软件教育学院成功举办的windows 7发布会 发现不止是我一个对windows 7偏爱有加。这里这里在座师生也是windows7 的粉丝。 windows 7发布会一次又一次的成举办功也源于它独特的性能&#xff0c;带给我们的方便、快捷。 经过我近一个月的使用&…

09年IT界最愚蠢的九件事 Windows7精简版UAC上榜(转)

据国外媒体报道&#xff0c;临近岁末&#xff0c;资讯网站eWeek于上周评出了《九款年度重磅产品》。无独有偶&#xff0c;该网站此番又评选出2009年度最不受用户欢迎的九大事件&#xff1a; 1、亚马逊删书门 今年七月份&#xff0c;在线销售巨人亚马逊&#xff08;Amazon&…

历经十年,还有一个月,Windows 7 生命周期将结束,相信很多人还是觉得win7不错的

距离 Microsoft 终止对 Windows 7 的支持只剩一个月的时间了,到 2020 年 1 月 14 日,这款经典的操作系统就要和大家 say goodbye 了。 2009 年 7 月 4 日,Windows 7 正式开发完成,到现在已经整整 10 岁。它在 Vista 前辈的基础上发展而来,界面友好,功能强大,使用高效,因…

服务器装系统步骤图解win7,w7系统重装步骤是怎样的|w7重装系统教程图解

w7系统是当前最稳定&#xff0c;也是最主流的系统&#xff0c;不过w7系统在使用过程也会出现系统故障&#xff0c;有些甚至出现系统崩溃不能启动的问题&#xff0c;这时候就需要重装系统&#xff0c;那么w7系统重装步骤是怎样的呢&#xff1f;w7重装系统一般有三种方式&#xf…

基于阿基米德优化算法优化的BP神经网络(预测应用) - 附代码

基于阿基米德优化算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于阿基米德优化算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.阿基米德优化优化BP神经网络2.1 BP神经网络参数设置2.2 阿基米德优化算法应用 4.测试结…

为何依然有很多用户不愿舍弃Windows7?

微软早在2016年7月29日之后就关闭了免费升级到Windows10的通道&#xff0c;但是那之后可以通过辅助技术通道免费将Windows7和Windows8.1升级到Windows10&#xff0c;直到12月31日完全关闭&#xff0c;此后用户升级到Windows10需要付费&#xff0c;不过为何还是有那么多的用户喜…

w7的计算机属性系统保护在哪个文件夹,W7恢复系统文件最有效的方法

文件丢失这个问题已经不是第一次遇到了&#xff0c;其实并不需要多么高端的操作&#xff0c;W7恢复系统文件非常简单。接下来小编将详细给大家介绍一下win7系统自带的还原功能&#xff0c;以及教大家W7恢复系统文件最有效的方法&#xff0c;掌握了这个方法以后再也不怕文件丢失…

Windows 7 又惹祸了!

8 月 3 日深夜&#xff0c;全球晶圆制造领域最为核心的代工厂台湾积体电路制造股份有限公司&#xff08;以下简称台积电&#xff09;三条生产线突然遭到病毒入侵&#xff0c;导致数条生产线被迫中断 3 天。据台媒报道&#xff0c;这次事件中被波及的有新竹、台中和台南三处厂区…

8.7.tensorRT高级(3)封装系列-调试方法、思想讨论

目录 前言1. 模型调试技巧总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-调试方法、思想讨论 课程大纲可看…

remove logo now注册码

点击下载来源&#xff1a;remove logo now注册码 remove logo now注册码是用来激活破解一款非常好用的视频水印去除工具remove logo now的激活注册码&#xff0c;也可以说是序列号。我们知道这款软件由于涉及版权问题&#xff0c;需要收费购买使用&#xff0c;试用版只能免费试…

idea 2019.1.3注册码(亲测可用)

注册码&#xff1a; YZVR7WDLV8-eyJsaWNlbnNlSWQiOiJZWlZSN1dETFY4IiwibGljZW5zZWVOYW1lIjoiamV0YnJhaW5zIGpzIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2Us…

sqlyog 注册码

姓 名&#xff08;Name&#xff09;&#xff1a;ttrar 序 列 号&#xff08;Code&#xff09;&#xff1a;8d8120df-a5c3-4989-8f47-5afc79c56e7c 或者&#xff08;OR&#xff09; 姓 名&#xff08;Name&#xff09;&#xff1a;ttrar 序 列 号&#xff08;Code&#xff0…