![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
一纸折扇清
这个作者很懒,什么都没留下…
展开
-
LeetCode 2.两数相加
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路是链表;每个相加要判断是否进位;要判断两个原链表长原创 2020-12-17 18:44:00 · 76 阅读 · 0 评论 -
LeetCode 274.H指数
题目描述给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论文每篇被引用次数 不超过 h 次。例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。示例:输入:citations = [3,0,6,1,5原创 2020-11-21 11:10:08 · 137 阅读 · 0 评论 -
剑指offer 03.数组中重复的数字
题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000解题思路本题没有限制时间和空间复杂度,面试的时候需要问一下面试官,这里默认采用时间复杂度O(N),空间复杂度O(1)的原地哈希代码实现class S原创 2020-11-15 23:09:26 · 63 阅读 · 0 评论 -
LeetCode 442.重复的数字
题目描述给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]解题思路原地哈希,注释部分是标记数组的方法代码实现class Solution {public: vector<int> findDuplicates(vector<int>&原创 2020-11-14 11:48:49 · 95 阅读 · 0 评论 -
LeetCode 645.错误的集合
题目描述集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数组的长度范围是 [2, 10000]。给定的数组是无序的。解题思路本题使用原地哈希算法,所谓原地哈希算法就是原创 2020-11-10 09:37:03 · 124 阅读 · 0 评论 -
LeetCode 136.只出现一次的数字
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题思路使用异或的性质:1、任何数和0做异或,结果仍然是原来的数2、任何数何其自身做异或运算,结果是03、异或运算满足交换律和结合律本体遍历一次,重复的数相异或的0,最后只剩出现一次的数字代码实现class原创 2020-11-09 10:38:52 · 96 阅读 · 0 评论 -
LeetCode 628.三个数的最大乘积
题目描述给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。解题思路遍历一遍,找出最大的三个数和最小的两个数代码实现class Solution {public: int maximumProduct(vect原创 2020-11-08 14:24:29 · 63 阅读 · 0 评论 -
LeetCode 414.第三大的数
题目描述给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 3:输入: [2, 2, 3, 1]输出: 1解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。存在两个值为2的数,它们都排第二。解题思路题目要求时间复杂度是O(n),所以所有sor原创 2020-11-08 11:08:11 · 92 阅读 · 0 评论 -
LeetCode 495.提莫攻击
题目描述《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。示例1:输入: [1,4], 2输出: 4原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。所以最原创 2020-11-07 18:24:10 · 127 阅读 · 0 评论 -
LeetCode 485.最大连续1的个数 执行时间超过100%用户
题目描述给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。解题思路遇1加1,遇0用乘0来清0代码实现class Solution {public: int findMaxConsecutiveOnes(vector<int>& nums) {原创 2020-11-07 17:05:37 · 141 阅读 · 0 评论