自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 双指针

环形链表 class Solution: def hasCycle(self, head: ListNode) -> bool: slow = head if (not slow) or (not slow.next): return False fast = head.next while slow != fast: slow = slow.next if

2021-01-30 22:55:58 63

原创 并查集+省份数量

并查集是一种数据结构,并(Union)代表合并,查(Find)代表查找,集(Set)代表这是一个以字典为基础的数据结构,基本功能是合并集合中的元素,查找集合中的元素。 并查集的典型应用是有关连通分量的问题,并查集解决单个问题(添加,合并,查找)的时间复杂度都是O(1)。 数据结构 在并查集里面,每个节点会记录它的父节点 class UnionFind: def __init__(self): # 记录每个节点的父节点 self.father = {} 如果节点互相连通(从一个节点可以达到另一.

2021-01-27 15:30:56 225

原创 多数元素

class Solution: def majorityElement(self, nums: List[int]) -> int: dic = {} for num in nums: if num in dic: dic[num] = dic[num] + 1 else: dic[num] = 1 ans = 0 .

2021-01-20 21:39:05 68

原创 格雷编码leetcode+牛客

真的难 class Solution: def grayCode(self, n: int) -> List[int]: res, head = [0], 1 for i in range(n): for j in range(len(res)-1, -1, -1): res.append(head+res[j]) head <<= 1 retur...

2021-01-18 21:54:30 96

原创 回溯法-子集

怎么样写回溯法(从上而下,*代表难点,根据题目而变化) 画出递归树,找到状态变量(回溯函数的参数),这一步非常重要 * 根据题意,确定结束条件 找准选择列表(与函数参数相关),与第一步紧密关联 * 判断是否需要剪枝 做出选择,递归调用,进入下一层 撤销选择 构建递归树,如上图所示,选择列表里的数,都是选择路径(红色框)后面的数,使用一个参数start来标识当前的选择列表的起始位置。也就是标识每一层的状态,所以状态变量是起始位置。 找结束条件:start参数超过边界的时候,程序自己跳过下一层递归了,因

2021-01-17 21:13:47 164

原创 旋转链表

# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def rotateRight(self, head: ListNode, k: int) -> ListNode: if head == Non.

2021-01-17 12:23:04 66

原创 螺旋矩阵 II

这题跟顺时针打印基本一样 class Solution: def generateMatrix(self, n: int) -> List[List[int]]: grid = [[0 for i in range(n)] for j in range(n)] left = 0 right = n -1 top = 0 bottom = n - 1 j = 1 while True

2021-01-17 11:41:52 63

原创 岛屿数量

BFS class Solution: def numIslands(self, grid: List[List[str]]) -> int: rows = len(grid) cols = len(grid[0]) count = 0 for i in range(rows): for j in range(cols): if grid[i][j] == '1': .

2021-01-17 11:10:26 69

原创 合并区间

class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: length = len(intervals) if length == 1: return intervals intervals.sort() l = intervals[0][0] r = intervals[0][1] .

2021-01-16 21:35:41 86

原创 无重复字符的最长子串

class Solution: def lengthOfLongestSubstring(self, s: str) -> int: max_len = 0 dic = {} ls = [] for c in s: if c in dic: dic = {} dic[c] = 1 for i in range(.

2021-01-16 08:58:38 66

原创 Python字典用法

dic = {} 创建空字典 for key in dic 。 key是否在字典的键值中。字典的键值是不可变类型。 clear()方法。dic.clear()清空字典。 get()方法。根据key来获取value,不存在时返回None。dic.get(key) #返回对应的value update()方法。更新字典。dic.update({key:value}) items(), keys(), values()。items()获取字典中所有的key-value对,keys()获取所有的key,value.

2021-01-14 15:22:17 206

原创 字母异位词分组

Python字典的骚操作挺多的 class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: dic = {} for i in strs: key = ''.join(sorted(i)) if key in dic: dic[key].append(i) else

2021-01-14 14:50:39 62

原创 有效的括号

注意边界条件 class Solution: def isValid(self, s: str) -> bool: stack = [] if len(s) == 0: return True i = 0 while i < len(s): if (s[i] == ')' or s[i] == ']' or s[i] == '}') and stack:

2021-01-14 14:12:01 64 1

原创 乘积最大子数组

这题没想出来,不会做 class Solution: def maxProduct(self, nums: List[int]) -> int: length = len(nums) dpmax = nums[0] dpmin = nums[0] ans = nums[0] for i in range(1,length): dp_max = dpmax dp_mi

2021-01-13 21:43:54 61

原创 最长回文子序列

class Solution: def longestPalindromeSubseq(self, s: str) -> int: length = len(s) dp = [[1 for i in range(length)] for j in range(length)] for i in range(length-1, -1, -1): for j in range(i+1, length): .

2021-01-13 19:06:25 89 1

原创 最长回文子串

class Solution: def longestPalindrome(self, s: str) -> str: length = len(s) dp = [[False for i in range(length)] for j in range(length)] for i in range(length): dp[i][i] = True for i in range(length-1, -.

2021-01-13 18:12:22 56

原创 不同路径

class Solution: def uniquePaths(self, m: int, n: int) -> int: dp = [[0]*n]*m dp[0][0] = 1 if m == 1 and n == 1: return 1 for i in range(m): for j in range(n): if i == 0 and j =.

2021-01-12 21:07:06 65

原创 礼物的最大价值

class Solution: def maxValue(self, grid: List[List[int]]) -> int: m = len(grid) n = len(grid[0]) for i in range(m): for j in range(n): if i < 1 and j < 1: continue; .

2021-01-12 20:47:42 74

原创 栈的压入、弹出序列

class Solution: def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool: q = 0 stack = [] for num in pushed: stack.append(num) while stack and stack[-1] == popped[q]: .

2021-01-12 17:49:10 56

原创 重建二叉树

# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeN.

2021-01-12 16:00:29 74

原创 Python中的map函数

>>>def square(x) : # 计算平方数 ... return x ** 2 ... >>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方 [1, 4, 9, 16, 25] >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数 [1, 4, 9, 16, 25] # 提供了两个列表,对相同位置的列表数据

2021-01-11 13:08:08 251

原创 顺时针打印矩阵

难度竟然是简单,我错了好几次。。。。。。 # -*- coding:utf-8 -*- class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # write code here res = [] if len(matrix) == 0: return res top = 0 bottom = len(m.

2021-01-10 22:07:04 74

原创 数值的整数次方

class Solution: def myPow(self, x: float, n: int) -> float: if x == 0: return 1 if n < 0: x = 1 / x n = -n res = 1 while n>0: if n & 1: res = .

2021-01-10 19:37:27 58

原创 旋转数组的最小数字

class Solution: def minArray(self, numbers: List[int]) -> int: left = 0 right = len(numbers) - 1 while left < right: mid = (left + right) // 2 if numbers[mid] > numbers[right]: l.

2021-01-08 20:16:35 67

原创 替换空格

#include<string> using namespace std; class Solution { public: string replaceSpace(string s) { int pos = s.find(" ");//查找子串在目前字符串中的位置,找不到返回-1 while( pos != -1 ) { s = s.replace(pos,1,"%20");//将字符串中以某个位置开始的指定长度.

2021-01-08 18:47:36 148

原创 矩阵中的路径

class Solution: def exist(self, board: List[List[str]], word: str) -> bool: m = len(board) n = len(board[0]) def dfs(k,i,j): if i<0 or j<0 or i>=m or j>=n: return False i..

2021-01-08 18:27:30 172

原创 接雨水

Python 双指针的思想 import numpy as np class Solution: def trap(self, height: List[int]) -> int: if len(height) < 2: return 0 max_index = np.argmax(height) max_left = height[0] max_right = height[-1] .

2021-01-07 14:16:48 73

原创 剪绳子

题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 Python class Solution: def cutRope(self, number): # write code here dp = [0] * (nu

2021-01-07 13:37:00 56

原创 二维数组查找

题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 class Solution { public: bool Find(int target, vector<vector<int> > array) { if (array.empty() || array[0].empty()) return false;

2021-01-06 21:32:17 60

原创 构建乘积数组

题目描述 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];) 对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。 class Solution: def multiply(self, A): # w

2021-01-04 12:02:37 48

原创 数组中重复数字

题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中第一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 返回描述: 如果数组中有重复的数字,函数返回true,否则返回false。 如果数组中有重复的数字,把重复的数字放到参数duplication[0]中。(ps:duplication已经初始化,可以直接赋值使用。) # -*- codi

2021-01-04 11:26:22 79

空空如也

空空如也

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

TA关注的人

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