自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 和为k的子数组

给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。 nums = [0…i…j…end] 假设nums[i…j]的和为k 那么nums[0…j]的和为k + nums[0…i]的和!!! 所以仅需维持一个前缀和哈希表,记录nums[0…end]所有前缀和出现的次数即可! class Solution: def subarraySum(self, nums, k): d = defaultdict(int) # 产生一个默认值为0的字典,存储nums的所有

2021-09-07 22:03:59 120

原创 有重复元素数组的子集问题(去重)

去重时先排序,则重复元素必在一起,比较好判断!!! 举例:[1, 2, 2, 2]这种情况,排完序后从左到右取值,对于两个相邻的2,如果前一个2已经取到,则在下一层递归中可以取后一个2,也可以不取。 但是如果前一个2此时是未取到的状态,则后一个2必不能取,因为默认两个2在一起时要取一个只能取第一个2!!! class Solution: def subsetsWithDup(self, nums): res = list() # 存放所有子集 n = len(num

2021-09-06 15:27:35 280

原创 求一个数组(无重复元素)的所有子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 # 递归写法 class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: def f(nums, i): # [0....i-1]已经确定,nums[i]要/不要 if i == len(nums):

2021-09-06 14:38:34 430

原创 2021-09-04

全排列问题–有重复元素、去重 # !/usr/bin/env python # -*- coding: utf-8 -*- # # nums含重复元素的时候,使用record存储每层已经选过的元素,好理解!缺点:额外空间复杂度高! # class Solution: # def permute(self, nums, i): # if i == len(nums): # result.append(nums[:]) # return

2021-09-04 23:12:20 121

原创 全排列问题(无重复元素)

无重复元素的全排列问题 # !/usr/bin/env python # -*- coding: utf-8 -*- class Solution: def permute(self, nums): if len(path) == len(nums): result.append(path[:]) # 注意,这里添加path必须以path[:]形式添加,否则加入的会是空列表!!! return for j in ran

2021-09-04 21:42:44 268

原创 最长的括号子串

给出一个仅包含字符’(‘和’)'的字符串,计算最长的格式正确的括号子串的长度。 对于字符串"(()“来说,最长的格式正确的子串是”()",长度为2. 再举一个例子:对于字符串")()())",来说,最长的格式正确的子串是"()()",长度为4. # !/usr/bin/env python # -*- coding: utf-8 -*- # # # @param s string字符串 # @return int整型 # class Solution: def longestValidParent

2021-07-13 20:49:16 338

原创 最小覆盖子串

给出两个字符串 SS 和 TT,要求在O(n)O(n)的时间复杂度内在 SS 中找出最短的包含 TT 中所有字符的子串。 例如: S ="XDOYEZODEYXNZ"S=“XDOYEZODEYXNZ” T =“XYZ"T=“XYZ” 找出的最短子串为"YXNZ”“YXNZ”. 注意: 如果 SS 中没有包含 TT 中所有字符的子串,返回空字符串 “”; 满足条件的子串可能有很多,但是题目保证满足条件的最短的子串唯一。 import sys class Solution(object): def m

2021-07-13 09:08:40 78

原创 滑动窗口的最大值

给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 # -*- coding:utf-8 -*- # 使用双端队列 from collections import deque class Solution: def maxInWindows(self, num, size): # write code here nl = len(num) if size > nl or size < 1: return

2021-07-11 14:52:12 55

原创 数组中的最长连续子序列

数组中的最长连续子序列 给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数) # # max increasing subsequence # @param arr int整型一维数组 the array # @return int整型 # class Solution: def MLS(self , arr ): # write code here r = dict() # 字典,存放arr中元素状态

2021-07-10 19:26:54 128

原创 求一个数的质数因子

N = int(input()) # 因子循环到根号下N即可 for i in range(2, round(pow(N, 0.5)) + 1): # 每一个因子进行判断,能整除即为质因子!!! while N % i == 0: print(i, end=(' ')) N = N // i # 最终的N再进行判断,如果N为1则不输出,如果不为1则输出N,此时的N也是一个质因子!!! if N != 1: print(N, end=(' ')) ...

2021-06-29 11:01:38 534

原创 快排找数组中第K大的数

有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(1<=K<=n),请返回第K大的数(包括重复的元素,不用去重),保证答案存在。 -- coding:utf-8 -- sort() class Solution: def findKth(self, a, n, K): # write code here a.sort(reverse=True) return a[K-1] 使用快排思想 class Solution: def

2021-06-16 18:02:28 106

原创 归并两个有序数组

给出一个整数数组A和有序的整数数组B,请将数组A合并到数组 B中,变成一个有序的升序数组 注意: 1.可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n,A的数组空间大小为m+n 2.不要返回合并的数组,返回是空的,将数组B的数据合并到A里面就好了 3.A数组在[0,m-1]的范围也是有序的 归并 class Solution: def merge(self , A, m, B, n): # write code here # 使用归并排序

2021-06-16 15:41:19 178

原创 找二叉树中节点1和2的最近公共祖先节点

class TreeNode: def init(self, x): self.val = x self.left = None self.right = None @param root TreeNode类 @param o1 int整型 @param o2 int整型 @return int整型 找二叉树中节点1和2的最近公共祖先节点 class Solution: def lowestCommonAncestor(self, root, o1, o2 ): res = self.proce

2021-06-11 11:48:57 141 2

原创 青蛙跳上一个n级的台阶

-- coding:utf-8 -- class Solution: def jumpFloor(self, number): # write code here # 动态规划 # p[n]为跳到n级台阶总共的方法数 # p[n] = p[n-2] + p[n-1] # 初始化:p[1]=1, p[2]=2 # 动态规划的优化空间,数组优化为变量,O(n)优化为O(1) if number <= 1: return 1 if number == 2: return 2 p0 = 1 p1 = 2 fo

2021-06-10 22:55:49 131 2

原创 二叉树层序遍历

class TreeNode: def init(self, x): self.val = x self.left = None self.right = None @param root TreeNode类 @return int整型二维数组 二叉树层序遍历 class Solution: def levelOrder(self , root ): # write code here result = list() # 结果 if not root: return result queue = [

2021-06-10 22:39:05 78

原创 用两个栈stack实现一个队列queue

-- coding:utf-8 -- 用两个栈stack实现一个队列queue class Solution: def init(self): self.stack1 = list() self.stack2 = list() def push(self, node): # write code here self.stack1.append(node) def pop(self): # return xx # 判断列表为空,直接用 if not self.stac

2021-06-10 22:17:59 167

原创 检查链表是否有环

快慢指针 时间复杂度O(N),空间复杂度O(1) class Solution: def hasCycle(self , head): # write code here if head == None or head.next == None: return False slow = head fast = head.next while (fast.next != None and fast.next.next != None) and (slow != fast): slow = slow.next

2021-06-10 21:53:20 73

原创 牛客算法题:最长无重复子数组

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-05-30 17:18:14 227

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除