
数据结构
紫砂痕
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode交替二进制字符串
0. 交替二进制字符串 交替二进制字符串 是指有0,1 构成的、且0,1相间的字符串,比如“010”, “1010” 解决的方法,可以遍历两种可能:‘0’开头的交替字符串 或者 ‘1’ 开头的字符串。 1. leetcode 1758 生成交替二进制字符串的最少操作数 class Solution: def minOperations(self, s: str) -> int: temp1 = 0 temp2 = 0 for i in rang原创 2021-06-06 17:36:22 · 312 阅读 · 0 评论 -
leetcode 排序+动态规划的妙用
今天来学习一下区间中的任务序列问题。、 1. 1. leetcode1626 无矛盾的最佳球队 1.1 普通dfs搜索超时: class Solution: def isNormal(self,scores, ages, s): flag=True for i in range(len(s)-1): if ages[s[i]]<ages[s[-1]] and scores[s[i]]>scores[s[-1]]:原创 2021-04-18 18:16:12 · 302 阅读 · 1 评论 -
leetcode 1722
0. 题目 1. 并查集+ 哈希表 import collections class Solution: def minimumHammingDistance(self, source: List[int], target: List[int], allowedSwaps: List[List[int]]) -> int: n = len(source)+1 f = [i for i in range(n)] def getfather(x)原创 2021-02-01 23:02:15 · 163 阅读 · 0 评论 -
leetcode-1726同积元组
1. 题目 留意: 一组数据可以组成8个满足条件的元组 结合排序!!! 很关键 2. 解决方法: 1. 排序 + dfs得到数据的排列组合 class Solution: def isSatisitfy(self, num): if num[0]*num[3] == num[2]*num[1]: return True else: return False def tupleSa原创 2021-01-23 00:07:05 · 293 阅读 · 1 评论 -
leetcode --贪心算法
1. 贪心算法 问题可分解为多个子问题; 问题的最优解,可由每个子问题的最优解构成 2. 5634.删除子字符串的最大得分 解法一: class Solution: def maximumGain(self, s: str, x: int, y: int) -> int: res = 0 if y>x: s1 = "ba" v1 = y s2 = "ab"原创 2021-01-10 18:47:47 · 224 阅读 · 0 评论 -
leetcode --位运算基础知识以及应用
1. 位运算基础 1.1 基本表达 a与b: a&b a或b: a|b a异或b: a^b 1.2 进制转换 2. 题目 2.1 5649. 解码异或后的数组 这个题目考查异或相关的知识 a^b=c 能推出 c^b =a class Solution: def decode(self, encoded: List[int], first: int) -> List[int]: res = [first] for i in range(len(enco原创 2021-01-10 17:46:54 · 272 阅读 · 0 评论 -
leetcode--差分数组
0. 差分数组的概念: 常用于某个区间值都需加/减去a的问题。 1. 1094拼车 class Solution: def carPooling(self, trips: List[List[int]], capacity: int) -> bool: max_val = 0 for i in range(len(trips)): max_val = max(max_val, trips[i][2]) diff = [0原创 2021-01-05 23:37:14 · 1437 阅读 · 0 评论 -
leetcode 深度搜索 1641.统计字典序元音字符串的数目
class Solution: def countVowelStrings(self, n: int) -> int: result = 0 s="aeiou" def dfs(s,res): nonlocal result if len(res)==n: result+=1 return if len(s)=.原创 2020-12-06 23:49:56 · 261 阅读 · 0 评论 -
leetcode5619.最小不兼容性
1. 元素按个数排序,再依次分配 class Solution: def minimumIncompatibility(self, nums: List[int], k: int) -> int: if len(nums)%k!=0: return -1 dicta = {} for s in nums: if s not in dicta: dicta[s] =1.原创 2020-12-06 23:26:22 · 251 阅读 · 1 评论 -
N皇后问题,暴力回溯算法
class Solution: def isValid(self, board,idx_i,idx_j): n = len(board) for k in range(n): # 判断有没有在同一行的 if board[idx_i][k] == "Q": return False # 判断有没有在同一行的 if board[k][idx_.原创 2020-12-06 00:23:32 · 221 阅读 · 0 评论 -
leetcode深度搜索DFS--路径之和
1. 112 路径之和 这个题目的最大特点就是起点是根节点,终点是叶子节点,存在一条符合条件的路径就返回True。 1.1 方法一: 可以结合栈,来先序遍历完,看是否存在满足条件的路径: class Solution: def hasPathSum(self, root: TreeNode, sum: int) -> bool: if not root: return False stacks=[(sum-root.val,root)]原创 2020-11-23 23:20:16 · 289 阅读 · 1 评论 -
leetcode查并集--朋友圈/冗余连接
查并集的几个步骤 查询父节点 merge 遍历原创 2020-11-21 11:04:13 · 268 阅读 · 0 评论 -
5602 leetcode ,前缀和+哈希 以及滑动窗口
1. 前缀和+哈希 2. 滑动窗口解法 这个问题也可以看作是求中间最长子数组等于sum-x class Solution: def minOperations(self, nums: List[int], x: int) -> int: left = 0 N = len(nums) res = -1 sub=sum(nums)-x for i in range(N): sub = sub-.原创 2020-11-16 22:39:23 · 309 阅读 · 0 评论 -
数据结构-数组/字符串
数据结构1. 数组2. 字符串 1. 数组 实现一个支持动态扩容的数组 实现一个大小固定的有序数组,支持动态增删改操作 实现两个有序数组合并为一个有序数组 学习哈希表思想,并完成leetcode上的两数之和(1)及Happy Number(202)!(要求全部用哈希思想实现!) 2. 字符串 实现一个字符集,只包含 a~z 这 26 个英文字母的 Trie 树 实现朴素的字符串匹配算法 ...原创 2019-04-11 21:50:18 · 286 阅读 · 0 评论 -
数据结构--链表法解决冲突问题构造的哈希表/LRU缓存淘汰算法
数据结构--哈希表1. 链表法解决冲突问题构造的哈希表参考链接:2. LRU缓存淘汰算法参考链接: 1. 链表法解决冲突问题构造的哈希表 参考链接: https://www.cnblogs.com/lpshou/archive/2012/05/08/2490191.html 2. LRU缓存淘汰算法 参考链接: https://blog.youkuaiyun.com/qq1332479771/article/...原创 2019-04-16 20:21:41 · 2422 阅读 · 0 评论 -
数据结构-排序/二分查找
数据结构-排序/二分查找1.排序2. 二分查找 1.排序 2. 二分查找原创 2019-04-14 19:45:05 · 1070 阅读 · 0 评论 -
数据结构--递归/回溯/分治/动态规划
数据结构--递归/回溯/分治/动态规划1.递归2. 回溯3. 分治4. 动态规划4.1 最长递增序列4.1 0-1 背包问题 1.递归 通过LeetCode上【70. 爬楼梯】学习(建议) # -*- coding: utf-8 -*- """ Created on Wed Apr 24 19:43:12 2019 @author: janti """ # In[] def ...原创 2019-04-26 21:01:53 · 502 阅读 · 0 评论 -
数据结构--图
数据结构--图 实现有向图、无向图、有权图、无权图的邻接矩阵和邻接表表示方法 实现图的深度优先搜索、广度优先搜索 实现 Dijkstra 算法、A* 算法 实现拓扑排序的 Kahn 算法、DFS 算法 对应的 LeetCode 练习题 Number of Islands(岛屿的个数) 英文版:https://leetcode.com/problems/number-of-islands/descr...原创 2019-04-22 20:31:47 · 970 阅读 · 0 评论 -
二叉树/堆
数据结构--二叉树/堆 二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树前、中、后序以及按层遍历 并完成leetcode上的验证二叉搜索树(98)及二叉树 层次遍历(102,107)!(选做)(保留往期第四天任务)注:这个跟下面的习题有重复 堆 实现一个小顶堆、大顶堆、优先级队列 实现堆排序 利用优先级队列合并 K 个有序数组 ...原创 2019-04-19 20:56:22 · 593 阅读 · 0 评论 -
数据结构--栈/队列/链表
数据结构--栈1. 栈的定义2. 顺序栈3. 链表栈4. 编程模拟实现一个浏览器的前进、后退功能 1. 栈的定义 栈有顺序栈和链栈之分,在顺序栈中,定义了栈的栈底指针(存储空间首地址base)、栈顶指针top以及顺序存储空间的大小stacksize。 其实这二者的区别是由顺序表和链表的存储结构决定的,在空间上,顺序表是静态分配的,而链表则是动态分配的;就存储密度来说:顺序表等于1,而链式表小于1,...原创 2019-04-07 23:35:58 · 683 阅读 · 0 评论