数据结构
紫砂痕
这个作者很懒,什么都没留下…
展开
-
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 · 225 阅读 · 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 · 228 阅读 · 1 评论 -
leetcode 1722
0. 题目1. 并查集+ 哈希表import collectionsclass 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 · 116 阅读 · 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 · 212 阅读 · 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 · 147 阅读 · 0 评论 -
leetcode --位运算基础知识以及应用
1. 位运算基础1.1 基本表达a与b: a&ba或b: a|ba异或b: a^b1.2 进制转换2. 题目2.1 5649. 解码异或后的数组这个题目考查异或相关的知识a^b=c 能推出c^b =aclass 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 · 211 阅读 · 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 · 1336 阅读 · 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 · 195 阅读 · 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 · 182 阅读 · 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 · 171 阅读 · 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 · 227 阅读 · 1 评论 -
leetcode查并集--朋友圈/冗余连接
查并集的几个步骤查询父节点merge遍历原创 2020-11-21 11:04:13 · 207 阅读 · 0 评论 -
5602 leetcode ,前缀和+哈希 以及滑动窗口
1. 前缀和+哈希2. 滑动窗口解法这个问题也可以看作是求中间最长子数组等于sum-xclass 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 · 240 阅读 · 0 评论 -
数据结构-数组/字符串
数据结构1. 数组2. 字符串1. 数组实现一个支持动态扩容的数组实现一个大小固定的有序数组,支持动态增删改操作实现两个有序数组合并为一个有序数组学习哈希表思想,并完成leetcode上的两数之和(1)及Happy Number(202)!(要求全部用哈希思想实现!)2. 字符串实现一个字符集,只包含 a~z 这 26 个英文字母的 Trie 树实现朴素的字符串匹配算法...原创 2019-04-11 21:50:18 · 209 阅读 · 0 评论 -
数据结构--链表法解决冲突问题构造的哈希表/LRU缓存淘汰算法
数据结构--哈希表1. 链表法解决冲突问题构造的哈希表参考链接:2. LRU缓存淘汰算法参考链接:1. 链表法解决冲突问题构造的哈希表参考链接:https://www.cnblogs.com/lpshou/archive/2012/05/08/2490191.html2. LRU缓存淘汰算法参考链接:https://blog.csdn.net/qq1332479771/article/...原创 2019-04-16 20:21:41 · 2093 阅读 · 0 评论 -
数据结构-排序/二分查找
数据结构-排序/二分查找1.排序2. 二分查找1.排序2. 二分查找原创 2019-04-14 19:45:05 · 917 阅读 · 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 · 378 阅读 · 0 评论 -
数据结构--图
数据结构--图实现有向图、无向图、有权图、无权图的邻接矩阵和邻接表表示方法实现图的深度优先搜索、广度优先搜索实现 Dijkstra 算法、A* 算法实现拓扑排序的 Kahn 算法、DFS 算法对应的 LeetCode 练习题Number of Islands(岛屿的个数)英文版:https://leetcode.com/problems/number-of-islands/descr...原创 2019-04-22 20:31:47 · 664 阅读 · 0 评论 -
二叉树/堆
数据结构--二叉树/堆二叉树实现一个二叉查找树,并且支持插入、删除、查找操作实现查找二叉查找树中某个节点的后继、前驱节点实现二叉树前、中、后序以及按层遍历并完成leetcode上的验证二叉搜索树(98)及二叉树 层次遍历(102,107)!(选做)(保留往期第四天任务)注:这个跟下面的习题有重复堆实现一个小顶堆、大顶堆、优先级队列实现堆排序利用优先级队列合并 K 个有序数组...原创 2019-04-19 20:56:22 · 318 阅读 · 0 评论 -
数据结构--栈/队列/链表
数据结构--栈1. 栈的定义2. 顺序栈3. 链表栈4. 编程模拟实现一个浏览器的前进、后退功能1. 栈的定义栈有顺序栈和链栈之分,在顺序栈中,定义了栈的栈底指针(存储空间首地址base)、栈顶指针top以及顺序存储空间的大小stacksize。其实这二者的区别是由顺序表和链表的存储结构决定的,在空间上,顺序表是静态分配的,而链表则是动态分配的;就存储密度来说:顺序表等于1,而链式表小于1,...原创 2019-04-07 23:35:58 · 296 阅读 · 0 评论