
力扣
学习、刷题之路
MonsterQy
永不放弃
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JSDay2-两个数组的交集
文章目录一、题目二、示例三、解法方法一:set时间复杂度+空间复杂度方法二:正向双指针+额外空间时间复杂度+空间复杂度一、题目给定两个数组,编写一个函数来计算它们的交集。二、示例示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]三、解法方法一:set分别对两个数组进行去重(用set),然后判断集合大小,在size更小些的集合中查找siz原创 2021-05-14 09:55:57 · 661 阅读 · 0 评论 -
JSDay1-两数之和
文章目录一、题目二、示例三、解法方法一:两层for循环时间复杂度+空间复杂度方法二:快慢指针时间复杂度+空间复杂度方法三:哈希表时间复杂度+空间复杂度一、题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems原创 2021-05-13 09:43:03 · 559 阅读 · 0 评论 -
JSDay1-合并两个有序数组
文章目录一、题目二、示例三、解法方法一:先合并两个数组在排序:时间复杂度+空间复杂度方法二:正向双指针+额外空间时间复杂度+空间复杂度方法三:逆向双指针时间复杂度+空间复杂度一、题目给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。二、示例示例 1:原创 2021-05-13 09:11:40 · 584 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good原创 2021-04-07 11:08:27 · 116 阅读 · 1 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]class Solution: def singleNumbers(self, nums: List[int]) -> List[int]:原创 2021-04-07 11:07:31 · 129 阅读 · 0 评论 -
剑指 Offer 53 - II. 0~n-1中缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法原创 2021-04-07 09:07:53 · 112 阅读 · 0 评论 -
剑指offer53-I 在排序数组中查找数字I
统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0方法一、class Solution: def search(self, nums: List[int], target: int) -> int: return nums.count(target)方法二、class Solution原创 2021-04-06 22:01:20 · 172 阅读 · 1 评论 -
力扣刷题之路——剑指 Offer 03. 数组中重复的数字
这道题如果不限制空间复杂度和时间复杂度的话,还是蛮简单的排个序,相邻两项比较就好,但如果面试官要求复杂度了呢?我们又该如何解决,题目如下:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。方法一、暴力遍历class Solution: def findRepeatNumber(self, nums: List[int]) ->原创 2021-03-28 09:53:52 · 262 阅读 · 0 评论 -
力扣刷题之路——20.有效的括号
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。答:这道题真是思考了半天,最初没想到要用栈,笨拙的用for循环…这里记录一下错误代码吧,(可以部分实现就是不能准确判别[]]]]这类的)class Solution: def isValid(self, s: str) -> bool: if(len原创 2021-01-11 19:42:30 · 218 阅读 · 0 评论 -
力扣刷题之路——剑指offer25.合并两个排序的链表
题目输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。这道题仍然是迭代的思想,即可以创建一个新的链表,然后逐一去比较原来链表的值,谁小,谁就添加到新链表里。值得注意的是,这两个链表长度不一定一样,所以要讨论一下长度的问题。代码很简单,实现结果如下:class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: l3 = ListNode(0)原创 2021-01-08 12:48:06 · 159 阅读 · 0 评论 -
力扣刷题之路——剑指offer24.反转链表(python实现)
题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。这道题我采用的是经典的迭代方法实现(通过移动指针,反复让两个节点间的指向反转)具体过程如下:(借用一下题解里的过程图)代码如下:class Solution: def reverseList(self, head: ListNode) -> ListNode: cur=head pre=None while cur: temp=cur.n原创 2021-01-08 12:19:52 · 256 阅读 · 0 评论 -
力扣刷题之路——1.两数之和(python实现)
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。看到此题,脑海中第一个想法就是采取双层循环嵌套,外层循环i指向数组头,内层循环j紧挨着他,两数值相加在与target相比较,不同则移动j(i不变),直至j==len(List),在移动i。具体实现如下:class Solution: def twoSum(s原创 2021-01-08 09:38:46 · 614 阅读 · 2 评论 -
力扣刷题之路——136.只出现一次的数字(python实现)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?方法一:这道题的解法其实有很多,因为在python中自带sort方法,所以可以先对其进行排序,排序后会保证重复元素一定是一样的,这样情况就会被归类为三种,即①:只出现一次的数字在数组中间 如:1 1 2 2 3 4 4②:只出现一次的数字在数组头 如:1 2 2 3 3 4 4③:只出现一次的数字在数组尾 如:1 1 2 2原创 2021-01-06 21:36:49 · 623 阅读 · 0 评论 -
力扣刷题之路——7.整数反转(python实现)
题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。首先看到这道题,我们可以想到很经典的算法,就是将每个位的数字取出来,再加回去,这道题的关键点其实是数的范围,这里的范围不仅指的是输入的数的范围也指反转后的数的范围。机器实现(方法一):1.在此类问题中,往往通过x%10,取出来末位数。2.每次取出来后将该数/1原创 2021-01-06 16:12:04 · 359 阅读 · 2 评论