力扣
2019.09.04
能力不及野心所以我在努力
展开
-
力扣每日一题——构造矩形
题目描述:需要注意的地方:lw=area , l>=w,由这两个条件得,ww<=area,也就是缩小了w的取值范围,大大减少了执行用时。话不多说看代码:class Solution: def constructRectangle(self, area: int) -> List[int]: w = int(area**0.5) for i in range(w,0,-1): if area % i == 0:原创 2021-10-23 21:21:45 · 49 阅读 · 0 评论 -
力扣初级算法——最长公共前缀
题目描述:答案:class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: a= len(strs) if not str: return "" b = strs[0] c=len(b) for i in range(c): for j in range(1,a):原创 2021-09-19 18:51:54 · 52 阅读 · 0 评论 -
力扣初级算法——外观数列
题目描述:这个题读题就让我读了好久,还是没有将这个题读明白,所以借鉴了,力扣中的题解,接下来我就对这个题解中的重要一些地方解释说明下for _ in range(1, n)中的_python中的for循环:for _ in range(n): ‘’就是一个占位符,它与for i in range(n) 相比,后者的i的值可能会用到,当不需要在意这个值的时候就可以用‘’来写...原创 2021-09-14 09:16:32 · 59 阅读 · 0 评论 -
力扣初级算法——实现strStr()
题目描述:自己做的:我这个·其实算暴力算法,但是我读题读错了哈哈哈哈哈哈哈,我还以为是匹配needle在haystack中的一个共同字母,所以就错了正确做法:转换成双指针窗口问题class Solution: def strStr(self, haystack: str, needle: str) -> int: if needle == '': return 0 left = 0原创 2021-09-09 09:26:49 · 51 阅读 · 0 评论 -
力扣初级算法——验证回文串
题目描述:这是一个双指针的问题用双指针的方法做:说一下里面的函数:lower是将字符串中的所有大写字母转换为小写字母isalnum 方法检测字符串是否由字母和数字组成如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 Falsejoin用于以指定分隔符将可迭代对象【成员必须为str类型】连接为一个新的字符串,分隔符可以为空返回值位字符串我们还可以把代码更加简化一些:...原创 2021-09-04 09:34:52 · 62 阅读 · 0 评论 -
力扣初级算法——有效的字母异位词
题目描述:这个题还是很简单的利用内置函数Counter()对字符串进行计数原创 2021-09-03 10:07:00 · 75 阅读 · 0 评论 -
力扣初级算法——字符串中的第一个唯一字符
题目描述:自己做的:我这个问题出现在for循环上,希望大家也注意一下答案:利用内置函数进行求解Counter()最主要的作用就是计算“可迭代序列中”各个元素(element)的数量具体用法看:Counterenumerate() 函数属于非常有用的高级用法,而对于这一点,很多初学者甚至中级学者都没有意识到。这个函数的基本应用就是用来遍历一个集合对象,它在遍历的同时还可以得到当前元素的索引位置具体用法看:enumerate...原创 2021-09-02 18:03:02 · 75 阅读 · 0 评论 -
力扣初级算法——整数反转
题目描述:答案:代码: def reverse(self, x: int) -> int: s= str(abs(x)) s=s[::-1] if x<0: s="-"+s x=int(s) if -2**31<=x<=2**31-1: return x else:原创 2021-09-02 08:59:32 · 88 阅读 · 0 评论 -
力扣初级算法——翻转字符串
题目描述:答案: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ for i in range(len(s)//2): s[i],s[len(s)-1-i] = s[len(s)-1-i],s[i] return s原创 2021-09-02 08:38:28 · 65 阅读 · 0 评论 -
力扣初级算法——移动零
题目描述:自己做的:这次我知道我错在哪里了,当两个零相邻的时候,就会丢掉一个零所以我们来看正确简单易懂的解法:class Solution:def moveZeroes(self, nums: List[int]) -> None:“”"Do not return anything, modify nums in-place instead.“”"f = 0s = 0while f<len(nums):if nums[f]!=0:nums[f],nums[s]=n原创 2021-08-31 15:46:21 · 49 阅读 · 0 评论 -
力扣初级算法——加一
题目描述:要注意:题目下面提示了,规定0 <= digits[i] <= 9,所以如果元素一旦超过9就会发生进位,答案就不对了,我在这个进位的地方也是出现了问题,现在让我们来看看简单直白的解法:代码可能不是最简便的,但是应该是最简单的(因为难的我也不会哈哈哈)class Solution:def plusOne(self, digits: List[int]) -> List[int]:a=len(digits)for i in range(a-1,-1,-1):if d原创 2021-08-30 16:56:28 · 96 阅读 · 0 评论 -
力扣初级算法——两个数组的交集
题目描述:自己做的:我觉得已经想得挺全面的了,但是还是有用例不通过,大佬们靠你们了,接下来看我考虑好的:将两个数组进行排序,随后用双指针顺序查找相同的元素.sort()将数组从小到大进行排序class Solution:def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:nums1.sort()nums2.sort()num3=[]l=0r=0while l<len(nums1)a原创 2021-08-30 13:13:27 · 72 阅读 · 0 评论 -
力扣初级算法——只出现一次的数字
题目描述:为自己首次做:因为是小白所以也不知道哪里有问题,哪位大佬可以指点指点查阅资料后发现异或^可以很好的解决这个问题:由于题目已告知数组是整数数组且是非空的,只有某个元素只出现一次,其它元素均出现两次,位运算中的“异或”,两个相同的数字异或的结果为 0,由于数组中其它元素均出现两次,只有一个元素出现一次,所以可以遍历整个数组,让所有数组元素异或,得到的结果就是只出现一次的那个元素。...原创 2021-08-29 14:46:30 · 98 阅读 · 0 评论 -
力扣初级算法——存在重复元素
题目描述:代码:class Solution:def containsDuplicate(self, nums: List[int]) -> bool:if len(nums) == len(set(nums)):return Falseelse:return True注意:由于set不允许存在重复元素,因此若转换为set前后数组长度不一样,则存在重复元素(利用set就会很简单)...原创 2021-08-29 10:18:40 · 102 阅读 · 0 评论 -
力扣初级算法——删除排序数组中的重复项
最近小白的我想学习算法于是就在力扣刷初级算法题,因为我是小白所以呈现给大家的代码,解题思路都比较简单易懂,废话不多说,让我们来看题先看一下题目描述给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以原创 2021-08-29 09:55:19 · 73 阅读 · 0 评论 -
力扣189.旋转数组
numslen = len(nums) 取数组的长度 (示例1:7)num1 = nums[:numslen-k] 使num1等于nums数组从后往前数k个位置前的数组 (num1=[1,2,3,4])del nums[:numslen-k] 删除nums内从后往前数k个位置前的数组(nums=[5,6,7])nums += num1 将转换后的两个数组加到一起(nums=[5,6,7,1,2,3,4]...原创 2021-01-08 15:44:51 · 75 阅读 · 0 评论 -
两数相加 力扣
class Solution:def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:a = ListNode() # 保留完整的链表l3 = a # 保留完整的链表c = 0 # 进位while l1 or l2:x=l1.val if l1 else 0 # 没有下一节点时取0y=l2.val if l2 else 0tmp = x+yif tmp+c <10:l3.next = ListNod转载 2020-12-19 19:14:35 · 114 阅读 · 1 评论