leetcode
MoonLight_dR
不忘初心、继续前行
展开
-
leetcode--【53】最大子序列和
题目:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。输入:nums = [1]输出:1题解:step1:定义一个变量max来存储,最大值,定义一个变量sum来记录累加值;step2:循环便利数组,判断sum+num的值与sum的大小,sum为当前较大值;step3:...原创 2021-02-07 10:16:18 · 118 阅读 · 0 评论 -
leetcode--【21】合并两个有序链表
题目:合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]输入:l1 = [], l2 = []输出:[]输入:l1 = [], l2 = [0]输出:[0]题解:双指针法step1:定义一个新的头节点,用来指向合并后的链表step2:比较两个链表当前所指的值的大小step3:较小值链接起...原创 2021-02-02 14:09:51 · 114 阅读 · 0 评论 -
leetcode--【11】盛最多水的容器
题目:盛最多水的容器给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例:...原创 2021-01-20 10:08:54 · 133 阅读 · 0 评论 -
leetcode--【2】两数相加
题目:两数相加给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807输入:l1 = [0], l2 = [0]输出:[0]输入:l1 = [9,9,9,9,9,9,...原创 2021-01-19 10:43:29 · 146 阅读 · 0 评论 -
leetcode--【15】三数之和
题目:三数之和给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = []输出:[]输入:nums = [0]输出:[]题解双指针:step1:对数组进行排序step2:对已经...原创 2021-01-18 10:59:23 · 150 阅读 · 0 评论 -
leetcode--【448】找到所有数组中消失的数字
题目:找到所有数组中消失的数字给定一个范围在1 ≤ a[i] ≤ n (n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入: [4,3,2,7,8,2,3,1]输出: [5,6]题解:方法1:暴力法step1:从1到n(数组的长度)遍历step2:判断数组...原创 2021-01-14 10:37:33 · 178 阅读 · 0 评论 -
leetcode--【160】相交链表
题目:相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1.原创 2021-01-13 10:43:25 · 136 阅读 · 0 评论 -
leetcode--【169】多数元素
题目:多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例:输入:[3,2,3]输出:3输入:[2,2,1,1,1,2,2]输出:2题解:方法1:hashstep1:定义一个hashstep2:遍历数组nums,以key-value的形式,key:当前数字,value:数字出现的次数step3:输出value大于一半所对应的数字..原创 2021-01-11 14:14:53 · 155 阅读 · 0 评论 -
leetcode--【121】买卖股票的最佳时机
题目:买卖股票的最佳时机给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能...原创 2021-01-06 15:07:30 · 147 阅读 · 0 评论 -
leetcode--【234】回文链表
题目:回文链表请判断一个链表是否为回文链表示例:输入: 1->2输出: false输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?方法一:转成数组step1:定义一个空数组step2:遍历链表,将数据存放在数组中step3:遍历数组,start从前往后,end从后往前,直到start=end结束step4:如果start对应的数据与end对应的相等,则start.原创 2021-01-04 13:59:12 · 107 阅读 · 0 评论 -
leetcode--【206】反转链表
题目:反转链表反转一个单链表。进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解:方法1:迭代法step1:设置两个指针,一个prev,初始为null,用来记录当前指针的前一个指针,一个curr,curr初始为head,用于记录当前需要反转的指针step2:遍历链表,对当前的指针进行反转,即cu原创 2020-12-28 15:26:25 · 161 阅读 · 0 评论 -
leetcode-【347】前k个高频元素
题目:前k个高频对元素给定一个非空的整数数组,返回其中出现频率前k高的元素。提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) ,n是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案示例:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]输入: nums = [1], k = 1输出...原创 2020-12-24 11:20:23 · 209 阅读 · 0 评论 -
leetcode—【20】有效的括号
题目:有效的括号给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例:输入: "()"输出: true输入: "(]"输出: false题解:需要遍历时,是从左往右遍历,左括号需要等着右括号匹配,先把左括号存起来,若是右括号,判断是否匹配step1:对字符串进行处理转换成数组,split,这样避.原创 2020-12-18 15:46:16 · 192 阅读 · 2 评论 -
leetcode —【136】只出现一次的数字
题目:只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例:输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4题解:【方法1:异或】采用异或的特性,解决此题异或运算特性:1、一个数和0异或结果为其本身:a⊕ 0 =a2、一个数的自身和自身进行异或,结果为0:a⊕a=03、异或满足交换律.原创 2020-12-18 14:20:22 · 149 阅读 · 0 评论 -
leetcode-【1】两数之和
题目:两数之和给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题解:【方法1:暴力解法】 采用两个for循环,思路简单 step1:循环遍历数组中的每一个...原创 2020-12-15 17:20:56 · 219 阅读 · 1 评论