- 博客(19)
- 收藏
- 关注
原创 187.重复的DNA序列
187.重复的DNA序列线性时间窗口切片 + HashSet 线性时间窗口切片 + HashSet 思想: 沿着长度为N的字符串移动长度为L的窗口,将每次移动得到的结果记录下来,如果在记录表中出现这样的字符,则记录在输出表中。否则在记录表中登记该结果。 class Solution(object): def findRepeatedDnaSequences(self, s): N=len(s);L=10 #这里设置成set(),后面使用的参数设置为add.
2021-05-28 21:51:16
197
原创 Leetcode.328.奇偶链表.python
Leetcode.328.奇偶链表一、拼接奇数链表与偶数链表二、 一、拼接奇数链表与偶数链表 先将奇数节点和偶数节点分离。 奇数节点和偶数节点的头节点分别为:evenhead=head.next,odd=head,even=evenhead. 更新奇数节点的时候,odd.next=even.next, odd=odd.next. 更新偶数节点的时候,even.next=odd.next, even=even.next. 分离完毕的条件是:even/even.next=None. 最后,将奇偶链表连接起来od
2021-05-15 11:10:37
322
原创 Leetcode.203.移除链表元素.python
Leetcode.移除链表元素指针(哨兵节点) 指针(哨兵节点) 哨兵节点解密了 哨兵节点的提出是为了避免遇到需要删除头节点的情况。其主要目的是使链表标准化,如使链表永不为空、永不无头、简化插入和删除。 建立两个指针,一个指向当前节点,一个指向前一个节点。 class Solution(object): def removeElements(self, head, val): Newhead=ListNode(0,head) prev,cur=Newhead,head
2021-05-09 20:29:58
242
原创 Leetcode.206.反转链表.python
Leetcode.206.反转链表双指针递归 双指针 和之前283.移动零的想法类似。 固定两个指针,一个指针处理以及反转的部分,一个指向待反转的部分。 首先建立已经处理部分的指针的初始值:prev=None; 建立待处理部分的指针cur; 为了防止指针转向后丢失待处理节点之后的部分,首先在链表转向前,使用一个参数保存目前处理节点之后的部分。 class Solution(object): def reverseList(self, head): prev=None
2021-05-09 19:09:35
208
原创 Leetcode.33.搜索旋转排序数组.python
Leeicode.搜索旋转排序数组字典方法二分法 字典方法 暴力解法 class Solution(object): def search(self, nums, target): dictn={} for i,ele in enumerate(nums): if ele==target: return i return -1 二分法 重要的是分清target的位置,在前半段还是后半段 1.单凭
2021-05-08 22:11:53
153
原创 Leetcode.278.第一个错误的版本.python
Leetcode.第一个错误的版本二分法 二分法 由题意可知:前面的部分都是正确的版本,从第一个错误版本之后的全是错误版本。 如果isBadVersion(mid),返回的结果是True,说明找过头的,错误的版本在mid之前(包含mid),r=mid; 如果isBadVersion(mid),返回的结果是False,说明还没有找到,错误的版本在mid之后(不包含mid),l=mid+1 class Solution(object): def firstBadVersion(self, n):
2021-05-08 21:09:42
107
原创 Leetcode.162.最大峰值.python
Leetcode.最大峰值.python二分法 二分法 和153寻找最小值类似,这里是寻找极值,只需要任意一个极值即可,和两边对比即可。 如果nums[mid]>nums[mid+1],峰值在mid左侧(包含md),r=mid; 如果nums[mid]<nums[mid+1],峰值在mid右侧(不包含mid),即l=mid+1. 上述分析适用于三种种情况。 1.在开端取得峰值,使用前半部分分析来解释。 2.在结尾处取得峰值,使用后半部分分析解释 3.在中间取得峰值,结合进行分析 class S
2021-05-08 20:53:34
348
原创 Leetcode.153.寻找旋转排序数组中的最小值.python
Leetcode.寻找排序数组中的最小值快慢指针 快慢指针 这里使用的是nums[mid]<nums[r]是因为,当上式满足的时候,最小值点一定落在mid左侧(包含mid),故r=mid。 而如果nums[mid]>nums[r],则最小值一定在mid右侧(不包含mid),故l=mid+1。 如果按照nums[mid]>nums[l],只能判断最小值一定在mid左侧(不包含mid),故l=mid+1,但是当nums[mid]<nums[l]时候,不能保证判断最小值在mid左侧还是右
2021-05-08 20:10:06
175
原创 Leetcode.283.移动零.python
Leetcode.移动零.python快慢指针 快慢指针 使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。 在头节点位置分别建立快慢指针,快指针先行,如果快指针指向的节点值不为0,则将快慢指针节点进行交换, 交换后的慢指针进行移动,表示已经处理好之前的元素。 如果快指针指向的元素不为0,继续移动快指针。 class Solution(object): def moveZeroes(self, nums): l,r=0,0 #只有交换后左指
2021-05-08 18:43:29
167
原创 Leetcode.142.环形链表II.python
leetcode.环形链表II.python快慢指针 快慢指针 在已经判定是否存在环形链表的基础上进行操作 class Solution(object): def detectCycle(self, head): l=head;r=l #只要r可以顺利遍历,l就一定可以 while r and r.next: l=l.next r=r.next.next if r == l:
2021-05-08 18:23:08
155
原创 Leetcode.141.环形链表.python
leetcode.141.环形链表.python快慢指针)哈希表 快慢指针) 首先特殊情况:空链表与长度为1的链表必没有环 快慢指针:快指针每次走两步,慢指针每次走一步 如果有环形表,快慢指针终究会相遇,但是未必在终点相遇 class Solution(object): def hasCycle(self, head): l=head if l == None or l.next==None: return False r=
2021-05-08 18:12:22
160
原创 Leetcode.19.删除链表的倒数第n个节点.python
Leetcode.python.删除链表的倒数第N个节点自己解法(长度)栈 自己解法(长度) 首先获取链表长度l; 寻找链表长度l与倒数第n个节点中n的关系; index=l-n; 删除index位置节点即可。 细节: 长度为0的时候直接返回head(空链表); index=0的时候,相当于删除头节点。 class Solution(object): def length(self, head): length = 0 while head:
2021-05-08 15:54:05
282
原创 Leetcode 160.相交链表
Leetcode 相交链表使用python的三种解法自己解法哈希表方法快慢指针方法 使用python的三种解法 自己解法 拿到题之后,可以想到长链表比短链表要先多走差值步,两者才能同时到达相交点: 自定义链表长度函数 ; 求链表长度差值 ; 让较长的链表先行 ; 返回交点 。 class Solution(object): def length(self,head): cur=head l=0 while cur: l+=1
2021-05-08 14:19:48
122
原创 MySQL排序查询,常见函数,分组查询,连接查询
排序查询/常见函数/分组查询/连接查询排序查询常见函数分组函数分组查询连接查询 排序查询 语法 select 查询列表 from 表 where 筛选条件 order by 排序列表 特点 asc/desc; 排序支持单个字段、多个字段、别名、函数; order by一般放在查询语句最后(除limit之外) 常见函数 字符函数 concat substr instr upper lower replace length trim lpad rpad 数学函数 ceil round mod
2021-03-29 19:19:15
131
原创 MySQL语法规范
MySQL语法规范 不区分大小写,但是建议关键字大写,表名、列名小写。 每条命令用分号或\g结尾。 每条命令根据需要可以缩进或换行。 注释: 单行注释: #注释文字 单行注释: --注释文字 多行注释: /* 注释文字 */ ...
2021-03-06 20:59:27
201
原创 MySQL常见命令
MySQL的常见命令 查看数据库 show database; 进入某个数据库 use test; show tables; show tables from mysql; 目前还在test库,仅仅在test库中查询mysql的tables 查看自己在哪一个库: select database(); 创建table 由于目前仍在test库,创建的table也在test库中。 create table 表名( -> id int, -> name varchar(20)); 查看tes
2021-03-06 18:10:34
114
原创 MySQL的进入与退出
MySQL的进入与退出 这里写目录标题MySQL的进入与退出启动和停止登录与退出 启动和停止 1.首先要保证MySQL保证运行状态 以管理员身份打开命令提示符: 运行:net start mysql(这里是安装时自定义的服务名) 结束:net stop mysql(这里是安装时自定义的服务名) 登录与退出 前提是MySQL已经运行 1.MySQL自带的MySQL 5.5 Command Line Client输入密码即登录成功 (不建议,不够灵活,仅限于root用户) 2.同样是管理员
2021-03-06 17:30:27
154
原创 SQL第一课 了解及安装MySQL
学习SQL第一天一、保存数据的容器二、数据库的概念1.术语2.读入数据总结前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 一、保存数据的容器 1.内存(数组, 集合) 2.文件(永久存储数据,但是不方便查询) 3.数据库(实现数据持久化,管理系统完善,易于查询) 二、数据库的概念 1.术语 DB(database): 存储数据的仓库,数据库。 DBMS(database management system): 数据库是通过DBMS创建和操作的容器,数据库管理系统。 SQL (str
2021-03-01 17:29:52
269
原创 Leetcode(14.最长公共前缀)
Leetcode(14.最长公共前缀) Python 最长公共前缀 编写函数查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。如下: 输入:strs = ["flower","flow","flight"] 输出:‘fl' 输入:strs = ["dog","racecar","car"] 输出:"" 标准答案 Class Solution(object): def LongestCommonPrefix(self, strs): result = "" for i in
2021-02-27 19:22:51
127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅