LeetCode
文章平均质量分 51
南岸青栀*
渗透测试部分因为太铭感,所以不会在这边发了。会分享一些安全类的文章
展开
-
LeetCode:268. 丢失的数字、1404. 将二进制表示减到 1 的步骤数
268. 丢失的数字法1:遍历寻找class Solution: def missingNumber(self, nums: List[int]) -> int: for i in range(len(nums)+1): if i not in nums: return i法2:哈希表class Solution: def missingNumber(self, nums: List[int]) -> int:原创 2021-06-22 11:00:41 · 119 阅读 · 1 评论 -
LeetCode:1720. 解码异或后的数组、190. 颠倒二进制位
1720. 解码异或后的数组class Solution: def decode(self, encoded: List[int], first: int) -> List[int]: ''' 例子: 101^011 = 110 101^110 = 011 a^b^b = a 异或的性质 ''' arr = [first] for i in range(len(encoded)原创 2021-06-18 12:54:46 · 95 阅读 · 1 评论 -
LeetCode:1486. 数组异或操作
1486. 数组异或操作解法1:遍历异或class Solution: def xorOperation(self, n: int, start: int) -> int: res = 0 for i in range(0,n): res ^= start start += 2 return res解法2:找规律由上图可推算出,当n%4==0时,res = n 只剩一个数字当原创 2021-06-16 20:33:24 · 91 阅读 · 0 评论 -
LeetCode:143. 重排链表
143. 重排链表法1:借助列表存储节点对象# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def reorderList(self, head: ListNode) -> None: "原创 2021-06-16 10:01:41 · 113 阅读 · 17 评论 -
LeetCode:61.旋转链表(python3)
61.旋转链表法1:合环解环法# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def rotateRight(self, head: ListNode, k: int) -> ListNode:原创 2021-06-15 18:20:46 · 115 阅读 · 2 评论 -
LeetCode:14. 最长公共前缀、581. 最短无序连续子数组(python3)
14. 最长公共前缀方法1: 纵向扫描法class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: #纵向扫描法 com = "" #用来收集LCP #特殊情况,只有数组只有一个元素,LCP为本身 if len(strs)==1: return strs[0] #作为字符的索引 for i in range(len(min(原创 2021-06-14 16:39:05 · 71 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数、693. 交替位二进制数
剑指 Offer 15. 二进制中1的个数法1:转换为字符串形式,计数“1”class Solution: def hammingWeight(self, n: int) -> int: #法1:转换为字符串形式,计数“1” # n = str(bin(n))[2::] # print(n) # res = 0 # for s in n: # if s == "1":原创 2021-06-09 14:54:55 · 82 阅读 · 11 评论 -
LeetCode:118.杨辉三角、面试题 17.01. 不用加号的加法
118. 杨辉三角class Solution: def generate(self, numRows: int) -> List[List[int]]: res = [] line = [1] for i in range(numRows): res.append(line) line = [1] + [line[i]+line[i+1] for i in range(len(line)-1)原创 2021-06-07 16:29:10 · 164 阅读 · 13 评论 -
5777. 使数组元素相等的减少操作次数
文章目录5777. 使数组元素相等的减少操作次数超时超时改进超时改进官方题解:一次遍历5777. 使数组元素相等的减少操作次数思路:寻找当前数前面有多少种不同的数字超时class Solution: def reductionOperations(self, nums: List[int]) -> int: # count = 0 # while (min(nums)*len(nums)) != sum(nums): # num原创 2021-06-06 13:54:13 · 114 阅读 · 1 评论 -
LeetCode:707. 设计链表(python3)
文章目录707. 设计链表法1:规规矩矩写链表法2:巧用列表法(开辟新思路)707. 设计链表既然遇到这个题,就再次回顾一下,链表的创建吧法1:规规矩矩写链表#初始化节点函数class Node: def __init__(self,val): self.val = val self.next = Noneclass MyLinkedList: #初始化链表 def __init__(self,node=None): """原创 2021-06-05 20:05:12 · 193 阅读 · 8 评论 -
LeetCode:1669. 合并两个链表(python3)
文章目录1669. 合并两个链表方法:三指针法1669. 合并两个链表方法:三指针法# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def mergeInBetween(self, list1: ListNo原创 2021-06-04 13:19:00 · 129 阅读 · 3 评论 -
LeetCode:86. 分隔链表(python3)
文章目录86. 分隔链表法1:暴力求解优化一下:法2:四指针解法(改动原链表)86. 分隔链表法1:暴力求解将数据存储在两个数组中,然后合并两个数据。重新构建数组。# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution:原创 2021-06-04 00:39:45 · 173 阅读 · 3 评论 -
LeetCode:28. 实现 strStr()(python3)
文章目录28. 实现 strStr()思路1:暴力匹配优化:思路2:KMP算法;不在我的能力范围,日后补充28. 实现 strStr()思路1:暴力匹配遍历一遍,每次截取和needle相同长度的字符串,然后对比是否相同,相同则返回角标,遍历到最后都没有执行,说明不存在.特殊情况:两个字符串相等,就不需要在遍历进行比较了class Solution: def strStr(self, haystack: str, needle: str) -> int: if hay原创 2021-06-02 21:23:54 · 97 阅读 · 0 评论 -
LeetCode:8. 字符串转换整数(python3)
文章目录8. 字符串转换整数 (atoi)法1:正则表达式简单回顾一下正则表达式findall函数边界字符原生字符串重复数量限定符常用匹配符Python `*`的意义8. 字符串转换整数 (atoi)法1:正则表达式正好回顾一下正则表达式import reclass Solution: def myAtoi(self, s: str) -> int: MAX_NUM = 2**31 - 1 MIN_NUM = -2**31 s原创 2021-06-01 16:51:13 · 213 阅读 · 9 评论 -
LeetCode:242.有效的字母异位词;125.验证回文串(python3)
文章目录242. 有效的字母异位词法1:利用字典模拟哈希表法2:先排序,然后直接比较两个是否相同即可扩展:125. 验证回文串法1:巧用upper(),创建新字符法2:没话说,就是使用了一个isalnum()函数这位兄台着实有点秀242. 有效的字母异位词法1:利用字典模拟哈希表利用字典模拟哈希表:第一遍for循环建立字典,values值记录出现次数第二遍for循环,减去出现次数,当出现t[i]中内容不存在字典时,直接返回false若遍历完成,values最大值为0,则说明全部抵消掉,s和t一原创 2021-06-01 00:23:22 · 94 阅读 · 2 评论 -
LeetCode:328. 奇偶链表、387. 字符串中的第一个唯一字符(python3)
328. 奇偶链表# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def oddEvenList(self, head: ListNode) -> ListNode: if head == N原创 2021-05-31 19:24:49 · 61 阅读 · 0 评论 -
LeetCode:231. 2的幂、283. 移动零(python3)
231. 2 的幂法1:判断呗,直到n<2的时候class Solution: def isPowerOfTwo(self, n: int) -> bool: if n == 1: return True if n <= 0: return False while n>=2: print(n) if (n%2) == 0:原创 2021-05-30 11:07:05 · 77 阅读 · 2 评论 -
LeetCode:350. 两个数组的交集 II(python,JavaScript)
350. 两个数组的交集 II文章目录350. 两个数组的交集 IIpython法1:出现相同后,将列表中出现的删除。法2:使用哈希表(每次重复,就加入结果,并且value值-1)法3:如果给定数组是排好序的,使用双指针法javaScript排序+双指针python法1:出现相同后,将列表中出现的删除。class Solution: def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:原创 2021-05-29 10:02:33 · 243 阅读 · 13 评论 -
LeetCode:136. 只出现一次的数字(python3,JavaScript)
136. 只出现一次的数字python3法1:建立两个表一个用来记录值,一个用来记录出现次数class Solution: def singleNumber(self, nums: List[int]) -> int: key,value = [],[] for n in nums: if n in key: value[key.index(n)] += 1 el原创 2021-05-28 23:13:47 · 191 阅读 · 5 评论 -
LeetCode:104. 二叉树的最大深度(python3,javaScript)
文章目录104. 二叉树的最大深度python3法1:递归法法2:迭代法JavaScript104. 二叉树的最大深度python3法1:递归法思路:class Solution: def maxDepth(self, root): #递归法 # if root is None: # return 0 # else: # lh = self.maxDepth(root.left)原创 2021-05-27 19:55:10 · 135 阅读 · 2 评论 -
LeetCode:189. 旋转数组(python3)
189. 旋转数组法1:使用for循环,依次将最后一个弹出,然后插入数组首部class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ for i in range(k): lst = nums.pop()原创 2021-05-25 15:33:09 · 116 阅读 · 3 评论 -
LeetCode:1502. 判断能否形成等差数列(python3,javascript)
1502. 判断能否形成等差数列class Solution: def canMakeArithmeticProgression(self, arr: List[int]) -> bool: #法1先排序 # arr.sort() # flag = arr[1]-arr[0] # for i in range(len(arr)-1): # print(arr[i],arr[i+1],flag)原创 2021-05-22 00:24:51 · 387 阅读 · 2 评论 -
LeetCode:692. 前K个高频单词
692. 前K个高频单词注意审题:次数由大到小,字母有小到大字典双排序法先对次数排序,然后对字母进行排序class Solution: def topKFrequent(self, words: List[str], k: int) -> List[str]: dic = {} ans = [] for i in range(len(words)): if words[i] in dic.keys():原创 2021-05-21 23:25:12 · 58 阅读 · 0 评论 -
LeetCode:233.数字1的个数
233. 数字 1 的个数思路:固定其中一位为1,剩下的进行排练组合。class Solution: def countDigitOne(self, n: int) -> int: base = 1 res = 0 while base <= n: a = n // base b = n % base cur = a % 10 a //原创 2021-05-20 10:17:08 · 89 阅读 · 0 评论 -
LeetCode:1832判断句子是否为全字母句、1833雪糕的最大数量
LeetCode方法很多:主要思路就是看是否涵盖了全部字母方1:使用集合去重class Solution: def checkIfPangram(self, sentence: str) -> bool: set1 = set(sentence) lst = [0 for i in range(26)] for i in set1: lst[ord(i)-97] = 1 if 0 in lst:原创 2021-05-19 21:57:51 · 126 阅读 · 0 评论 -
LeetCode:1442. 形成两个异或相等数组的三元组数目
1442. 形成两个异或相等数组的三元组数目法1:四重循环python超时class Solution: def countTriplets(self, arr: List[int]) -> int: count = 0 #暴力法 for i in range(len(arr)): for j in range(i+1,len(arr)): for k in range(j,len(原创 2021-05-19 00:00:00 · 180 阅读 · 3 评论 -
LeetCode:1491、561、258
文章目录1491. 去掉最低工资和最高工资后的工资平均值法1:法2:一行python561. 数组拆分 I法1:排序法思路相同,不同写法日常python一行258. 各位相加法1:递归,运行结果还不错法2:迭代进阶1491. 去掉最低工资和最高工资后的工资平均值法1:class Solution: def average(self, salary: List[int]) -> float: salary.sort() salary.pop()原创 2021-05-18 00:02:52 · 127 阅读 · 2 评论 -
LeetCode:989,67(加法)
文章目录989. 数组形式的整数加法法1:暴力法法2:直接将数字加到最后一个,设置标志位,然后依次向前。67. 二进制求和同类题目989. 数组形式的整数加法法1:暴力法class Solution: def addToArrayForm(self, num: List[int], k: int) -> List[int]: #法1:暴力 # str1 = "" # res = [] # for n in num:原创 2021-05-16 17:07:01 · 85 阅读 · 0 评论 -
LeetCode717. 1比特与2比特字符(python3)
文章目录717. 1比特与2比特字符法1:设置标志位,遍历数组。遇1索引加2,遇0索引加1优化优化:法3:贪心,最后一位一定要为0,不然一定不会满足;717. 1比特与2比特字符法1:设置标志位,遍历数组。遇1索引加2,遇0索引加1class Solution: def isOneBitCharacter(self, bits: List[int]) -> bool: index = 0 while index<len(bits):原创 2021-05-13 22:52:35 · 170 阅读 · 2 评论 -
LeetCode:94. 二叉树的中序遍历(python3)
文章目录94. 二叉树的中序遍历法1:经典解法法2:标记法法3:优化法2(够python)法4:莫里斯遍历94. 二叉树的中序遍历左中右法1:经典解法写一个递归函数,先查找左节点,然后依次输出元素,再查找右节点class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: lst = [] def inOrder(root): if r原创 2021-05-12 23:47:47 · 226 阅读 · 5 评论 -
LeetCode 704. 二分查找
704. 二分查找思路:递归经典题,二分查找class Solution: def search(self, nums: List[int], target: int) -> int: def recur(high,low,target): if low > high: return -1 else: mid = (high+low) /原创 2021-05-11 19:16:02 · 75 阅读 · 0 评论 -
LeetCode:面试题 08.05. 递归乘法
面试题 08.05. 递归乘法方法1:常规思路;写一个递归函数使用加法class Solution: def multiply(self, A: int, B: int) -> int: def recursion(A,num): if num==0: return 0 return A+recursion(A,num-1) return recursion(A,B)优化原创 2021-05-10 22:56:12 · 187 阅读 · 0 评论 -
python--递归
python–递归文章目录python--递归例子:1.阶乘函数分析:2.绘制英式标尺3.二分查找4.文件系统例子:1.阶乘函数def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)print(factorial(5))分析:为了计算factorial(n)共执行了n+1次函数调用。阶乘的每次调用执行了一个常数级别的运算。得出结论:计算factornial(原创 2021-05-09 12:52:16 · 247 阅读 · 2 评论 -
数据结构与算法--二叉树
文章目录树的概念特点:树的基本术语:树的种类树的应用场景二叉树的基本概念二叉树的性质二叉树的实现节点的定义增加节点广度优先遍历前序遍历中序遍历后序遍历树的概念树(英语: tree) 是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n (n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下。特点:(1)每个节点有零个或多个子节点(2)没有父节点的节点称为根节点(3)原创 2021-05-06 20:39:48 · 172 阅读 · 2 评论 -
LeetCode:链表(4)
LeetCode:链表(4)文章目录LeetCode:链表(4)面试题 02.05. 链表求和445. 两数相加 II1721. 交换链表中的节点面试题 02.05. 链表求和思路1:1.创建一个新链表,用来存储两个链表之和。2.定义一个变量用来存储进位p3.遍历两个链表,遍历链表全部内容4.特殊情况(1):两个链表长度不一样;解决:加上判断语句,当其中一个链表遍历完成后,就不继续让其前进。l1, l2 = l1.next if l1 else None, l2.next if l2 e原创 2021-04-27 23:39:31 · 104 阅读 · 4 评论 -
LeetCode:链表(3)
LeetCode:链表(2)文章目录LeetCode:链表(2)876. 链表的中间结点1290. 二进制链表转整数19. 删除链表的倒数第 N 个结点24. 两两交换链表中的节点876. 链表的中间结点class Solution: def middleNode(self, head: ListNode) -> ListNode: lst = [] cur = head count = 0 while cur:原创 2021-04-25 21:57:48 · 214 阅读 · 4 评论 -
LeetCode:链表(1)
LeetCode:链表剑指offer 06.从头到尾打印链表剑指offer 18.删除链表的节点83.删除排序链表中的重复元素141.环形链表原创 2021-04-23 21:27:11 · 355 阅读 · 2 评论 -
数据结构与算法--(链表,栈,队列)
数据结构与算法–(链表,栈,队列)文章目录数据结构与算法--(链表,栈,队列)链表定义单向链表功能:1.头部添加元素2.尾部添加元素3.指定位置添加元素4.删除节点5.查找节点是否存在6.判断链表是否为空7.当前链表的长度8.遍历链表全部代码粘贴双向链表功能:1.头部添加元素2.尾部添加元素3.指定位置添加元素4.删除节点5.查找节点是否存在6.判断链表是否为空7.当前链表的长度8.遍历链表全部代码粘贴栈(stack)栈的实现队列(queue)队列的实现链表定义链表:是一种常见的数据结构,是一种线性原创 2021-04-22 16:26:58 · 612 阅读 · 4 评论 -
python3合并两个有序列表 and 加一
21.合并两个有序列表点此做题将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]常规思路:# Definition for singly-linked list.# class ListNode:# def原创 2021-03-31 16:58:33 · 879 阅读 · 2 评论 -
python3整数反转
python3整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0思路1:将其转为字符串进行翻转,并进行正负的判断。最后,题目要求如果原创 2021-03-31 09:12:49 · 1612 阅读 · 6 评论