leetcode解法
还不是为了进大厂
白舟的博客
最不能放弃的就是终身的学习
展开
-
leetcode刷题步骤一:数组(day2-移除元素)
移除元素原创 2023-02-03 11:50:27 · 108 阅读 · 0 评论 -
leetcode刷题步骤一:数组(day1-二分查找)
数组-二分查找原创 2023-02-01 21:11:21 · 86 阅读 · 0 评论 -
leetcode -最大连续子数组的和
def s(arry): tem = 0 res = arry[0] //n =[] for i in range(len(arry)): if tem+arry[i] <0: tem = 0 else: tem += arry[i] // n.append(arry[i]) res = max(res,tem) // print(n.原创 2021-10-15 19:36:32 · 48 阅读 · 0 评论 -
leetcode -给定一个长度为n的数组nums,数组由一些非负整数组成,现需要将他们进行排列并拼接,每个数不可拆分,使得最后的结果最大
解题思路:错误方案:大的数数字在前面,小的数字在后面 举一个反例说明一下这个方案为什么错:{9,10},排出来的最大数字是910,但是这样排的结果是109正确方案:对于两个数字A、B来说,如果AB>BA,那么A就应该放在B的前面。(AB表示数字A和B进行拼接)(这个前面不一定是紧挨着B,还有可能是EACDBF这样) 比如 我现在有一些数字是这样排列的; ECDBAF 然后 AB>BA,那么ECDABF>ECDBAF 交换了AB的顺序以后,如果AD>DA,那么A的顺序还.原创 2021-10-15 19:14:28 · 2582 阅读 · 0 评论 -
leetcode -字符串的大数加法
class Solution: def solve(self , s , t ): mlen = max(len(s), len(t)) // 取两者长度的最大值 // 在两个数字字符串的前面补0 比如'1'.zfill(3)='001' s = s.zfill(mlen) t = t.zfill(mlen) // print(type(s),t) carry = 0 # 相..原创 2021-10-13 11:30:30 · 175 阅读 · 0 评论 -
lreetcode - WC136 最长无重复子数组(不同解法)
本地实现,没有时间复杂度限制class Solution: def maxLength(self, arr): // 解法1 :创建一个字典,返回字典的key hashmap = {} for i in range(len(arr)): if arr[i] not in hashmap: hashmap[arr[i]] = i .原创 2021-10-04 19:47:52 · 113 阅读 · 0 评论 -
leetcode-NC50 链表中的节点每k个一组翻转
class Solution: def reverseKGroup(self , head , k ): Phead = ListNode(None) p = Phead while True: count = k stack = [] tmp = head while count != 0 and tmp != None: .原创 2021-10-03 16:35:44 · 85 阅读 · 0 评论 -
leetcode - NC70 单链表的排序
class Solution: def sortInList(self , head ): lis1 = [ ] # 创建一个列表 while head: lis1.append(head.val) # 将链表的值填到列表中 head = head.next lis1.sort() # 列表排序 tem = ListNode(0) # 创建一个新链表 phead.原创 2021-10-02 18:46:36 · 105 阅读 · 0 评论 -
leetcode-子数组的最大累加和
question:解决:class Solution: def maxsumofSubarray(self , arr ): dp = [0]*len(arr) #建立一个和arr长度一样的数组 res = arr[0] #将第一个数先保存在输出结果里 dp[0] = arr[0] #初始化 for i in range(1,len(arr)): dp[i] = max(d原创 2021-06-14 11:28:07 · 258 阅读 · 0 评论 -
leetcode-两个栈实现一个队列&两个队列实现一个栈(python)
question:1.两个栈实现一个队列:class CQueue: def __init__(self): self.q1 = [] self.q2 = [] def appendTail(self, value: int) -> None: return self.q1.append(value) #把值放到栈中 def deleteHead(self) -> int: if self.q2原创 2021-06-10 12:08:50 · 128 阅读 · 3 评论 -
leetcode-合并两个有序链表
question:解法:用递归求解,这个时间复杂度不低class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: if l1 ==None: return l2 if l2 == None: return l1 # 创建一个新链表,头节点为res res =原创 2021-06-09 17:15:22 · 71 阅读 · 0 评论 -
leetcode-求两个数之和(双指针,字典模拟哈希求解,哈希表边存边查找解法)
question:解法1:双指针代码很简短,但是复杂度比较高 def twoSum(self , numbers , target ): for a in range(len(numbers)-1): for b in range(a+1,len(numbers)): if numbers[a] + numbers[b] == target: return [a+1,b+1]原创 2021-06-08 17:43:11 · 119 阅读 · 0 评论 -
leetcode-求数组中第K大的数(快排)
question:解法:求这种最大最小的数或者数组,一般都会先将他们进行排序,这里我还是采用快排,之后会更新其他排序方法程序1:运行时出现了超时,因为时间复杂度已经达到了两次方,很高的时间复杂度系统不能通过class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: def findTopKth(left, right): indx = random.ran原创 2021-06-07 19:00:39 · 328 阅读 · 0 评论 -
leetcode-二叉树层序遍历
question:层序遍历和前中后序遍历的不同在与,后面三者用栈实现,二层序遍历则用队列实现比较块这里引出深度优先搜索DFS和广度优先搜索BFS解题:广度优先搜索BFSclass Solution: # 广度优先搜索BFS def levelOrder(self, root: TreeNode) -> List[List[int]]: queue=[root] # 将根节点保存到queue中 ans=[] if not r原创 2021-06-06 14:24:56 · 104 阅读 · 0 评论 -
leetcode-输出数组的最小K个数
question:解法:我最近用块排比较多,所以依旧采用快排的思想,先排序再返回K个数既可以了class Solution: def getLeastNumbers(self, arr: List[int], k: int) -> List[int]: def reversarr(left,right): # 判断特殊情况 if left >=right: return原创 2021-06-04 18:32:17 · 113 阅读 · 0 评论 -
leetcode-实现二叉树前后后遍历(总程序)
question:解法依旧采用栈的方法class Solution:# 前序函数 def preinvalue(self,root): if not root: return None self.result1.append(root.val) self.preinvalue(root.left) self.preinvalue(root.right) # 中序函数原创 2021-06-03 12:33:02 · 76 阅读 · 0 评论 -
LeetCode-二叉树前序,中序,后序(分开求解)
question:前序这里采用非递归(栈和队列)的思想解法:class Solution: def prevalue(self,root): # 判断是否为空 if not root: return None # 先将根节点放到栈 self.result.append(root.val) # 再放左节点 self.prevalue(root.left)原创 2021-06-03 11:00:06 · 97 阅读 · 0 评论 -
leetcode-排序(快排算法)
question:解法:快排class Solution: def sortArray(self, nums: List[int]) -> List[int]: def quick(left, right): if left>= right: return # 先取一个基数 ,可以是第一个也可以是最后一个 te原创 2021-06-03 10:45:58 · 659 阅读 · 1 评论 -
leetcode-单链表反转
题目:第一种解法:非递归:class Solution: def reverseList(self, head: ListNode) -> ListNode: #如果链表为空的情况 if head is None: return head #如果链表不为空的情况 pre = None cur = head #当链表出现空之后结束循环 while cur:原创 2021-06-01 15:37:23 · 112 阅读 · 0 评论