![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
行者无疆兮
十年磨一剑:https://lixiaofeng.blog.csdn.net
展开
-
【LeetCode】278. 第一个错误的版本
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出...原创 2018-08-20 20:14:27 · 209 阅读 · 0 评论 -
【LeetCode】49.字母异位词分组
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file..."""问题分析:首先把字符串排序,如果排序后的字符串相同,就放到到一起,可以用字典实现。"""def groupAnagrams(strs): dict = {} for item in ...原创 2019-03-16 21:31:10 · 143 阅读 · 0 评论 -
【LeetCode】62.不同路径
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/15# @Author: xfLi# The file..."""问题分析:动态规划方法,dp方程式如下:dp[n][m] = dp[n-1][m] + dp[n][m-1] # n为行数,m为列数"""def uniquePaths(m, n): d...原创 2019-03-16 21:32:22 · 170 阅读 · 0 评论 -
【LeetCode】152.乘积最大子序列
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file...# 动态规划新手:https://www.cnblogs.com/mengfanrong/p/4008635.html"""问题分析:动态规划思想,只要注意一点,就是考虑负数的情况(负负得正),...原创 2019-03-16 21:34:21 · 270 阅读 · 0 评论 -
【LeetCode】646.最长数对链
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file..."""问题分析:可以用贪心算法来解决,首先以数组中的每个元素的第二值为关键字进行排序,然后扫描一遍数组,看看能否首尾衔接的住?如果不能就舍弃,依次累计,即可。"""def findLongestCha...原创 2019-03-16 21:35:36 · 302 阅读 · 0 评论 -
【LeetCode】868.二进制间距
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file...# 动态规划def binaryGap(N): bin_N = bin(N)[2:] max_distance = 0 idx = 0 if bin_N.count('1') ...原创 2019-03-16 21:36:55 · 221 阅读 · 0 评论 -
【LeetCode】869.重新排序得到 2 的幂
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file..."""问题分析:方法1:(1)求出这个数字重新排列的所有组合,Python中可以使用itertools.permutations()函数实现,也可以用回溯法求解。(2)把(1)得到的所有组合,转换成2...原创 2019-03-16 21:37:51 · 371 阅读 · 0 评论 -
【LeetCode】877.石子游戏
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file..."""这是一个数学问题,要注意的有两点,第一,有偶数堆,第二,总数为奇数,不存在平局。所以这样想,如果有2堆,亚历克斯选一个多的,肯定赢了,如果有4堆,平分两堆,亚历克斯每两堆中先选一堆多的,最后是亚历克斯...原创 2019-03-16 21:39:42 · 433 阅读 · 0 评论 -
【LeetCode】3.无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...原创 2019-03-13 17:21:49 · 94 阅读 · 0 评论 -
【LeetCode】19.删除链表的倒数第N个节点
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file..."""问题分析:(1)设置两个指针,一个在前,先走n步,然后两个指针同时向前走,直到第一个指针走到头。(2)那么现在,第二个指针,就是前面要删除的结点。"""class ListNode: de...原创 2019-03-13 17:24:02 · 146 阅读 · 0 评论 -
【LeetCode】24.两两交换链表中的节点
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file...# 思路主要是,设置两个指针,一个在前一个在后,进行交互,此外还需要一个额外的指针做辅助。class ListNode: def __init__(self, x): self.val...原创 2019-03-13 17:25:17 · 93 阅读 · 0 评论 -
【LeetCode】43.字符串相乘
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/15# @Author: xfLi# The file..."""将字符串转化为整数"""def multiply(num1, num2): num1_int = 0 num2_int = 0 for i in range(len(num1...原创 2019-03-16 21:29:47 · 168 阅读 · 0 评论 -
【LeetCode】11.盛最多水的容器
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file..."""问题分析:题目意思就是让你找出两个直线,与x坐标轴构成一个桶,且让这个桶容纳的水最大。现在分析这个桶的容量和那些因素有关?很显然,和桶的底部的宽度有关、和两条直线中最短的一条有关。所以(1)以最大桶...原创 2019-03-16 21:28:30 · 163 阅读 · 0 评论 -
【LeetCode】860.柠檬水找零
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file..."""问题分析:从提示可以看出,这个列表里面只有三种数,而且 5 又不用考虑找零,所以只需扫描一遍列表进行相应的统计即可。(1)从左到右扫描 bills[i] 列表,分别统计5元、10元的个数。(2)遇到...原创 2019-03-14 18:22:45 · 202 阅读 · 0 评论 -
【LeetCode】15.三数之和
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/14# @Author: xfLi# The file..."""问题分析:与16题相似,可以先从小到大排序,然后固定一个值,从这个值的右区间开始,设置两个指针 left, right向0逼近。(1)对nums从小到大排序。(2)遍历(或者是枚举)取出一个值,并...原创 2019-03-14 18:24:56 · 138 阅读 · 0 评论 -
【LeetCode】16.最接近的三数之和
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/14# @Author: xfLi# The file..."""问题分析:与15题相似,可以先从小到大排序,然后固定一个值,从这个值的右区间开始,设置两个指针 left, right向最近值逼近。(1)对nums从小到大排序。(2)遍历(或者是枚举)取出一个值...原创 2019-03-14 18:25:58 · 175 阅读 · 0 评论 -
【LeetCode】17.电话号码的字母组合
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file..."""问题分析:很显然是,组合问题使用回溯法,递归求解,可以使用深度优先(dfs)的思想。(1)用 index 记录 digits 字符串中的字符索引。(2)用 paths 表示走过的字符,走到头,就保存...原创 2019-03-14 18:42:08 · 209 阅读 · 0 评论 -
【LeetCode】875.爱吃香蕉的珂珂
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/14# @Author: xfLi# The file..."""问题分析:理解题意上,注意两点,一点是 piles.length <= H 所以可以得出,吃香蕉最快的速度是max(piles) ,其次是,在同一怼上吃香蕉不满一小时,按一小时计。很显然可以看出...原创 2019-03-14 18:55:28 · 819 阅读 · 0 评论 -
【LeetCode】876.链表的中间结点
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/18# @Author: xfLi# The file..."""问题分析: 设置两个指针,一个快的一个慢的,慢的每次走一步,快的每次走两步。 当快的指针到达尾部时,慢的指针就是要求的值了,返回即可。"""class ListNode: d...原创 2019-03-19 16:00:53 · 103 阅读 · 0 评论 -
【算法题】不重叠线段
问题分析:(1)先把数据整理一下,使a < b。(2)贪心思想解决,以 线段末尾点b为关键字,进行排序。(3)以第一个线段为开始,如果后续的线段的开始点,大于等于前一个线段的结束点,则计算器加一,并更新,新的末尾点。依次遍历结束。"""def notRepeatline(nums, n): res = [] count = 1 for num in...原创 2019-03-19 16:22:33 · 2367 阅读 · 0 评论 -
【LeetCode】206.反转链表
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/19# @Author: xfLi# The file...# 链表头插法class ListNode: def __init__(self, x): self.val = x self.next = Nonedef ...原创 2019-03-19 17:26:35 · 108 阅读 · 0 评论 -
【LeetCode】888.公平的糖果交换
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/16# @Author: xfLi# The file..."""问题分析:题目说的很明白了,一定有答案。我们设:Alice和Bob 分别拿出的是x、y,所以有:sum(A) - x + y = sum(B) - y + xy = (sum(B) - sum(A)...原创 2019-03-16 21:26:21 · 221 阅读 · 0 评论 -
【LeetCode】46.全排列
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file..."""问题分析:使用回溯法,我们每次选择一个数出来,然后把剩下的数,再选择一个出来,依次类推,选到头,就回溯到上一层。就是深度优先搜索方法。"""def permute(nums): res ...原创 2019-03-13 17:26:53 · 178 阅读 · 0 评论 -
【LeetCode】47.全排列Ⅱ
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file..."""问题分析:还是回溯法,只是这次,在进行深度优先搜索的之前,先进行一次排序,目的就是为了把相同的数字放到一起,在每层选择中,如果同数字出现重复,那么就选择一次,并依次类推。走到头,添加到输出数组,并回...原创 2019-03-13 17:27:51 · 151 阅读 · 0 评论 -
【LeetCode】48.旋转图像
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file..."""问题分析:(1)只能在原地矩阵上做操作,不能使用其他的矩阵,且图像确定,n*n的矩阵。(2)很显然分两步,第一步,矩阵转置;第二步,矩阵逆序操作。这两个过程可以颠倒。"""def rotate(m...原创 2019-03-13 17:29:21 · 173 阅读 · 0 评论 -
【LeetCode】142.环形链表 II
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/26# @Author: xfLi# The file..."""问题分析:利用set来存放已经遍历的节点"""def hasCycle(head): if not head: return None res = set() ...原创 2019-03-26 21:53:56 · 223 阅读 · 0 评论 -
【LeetCode】143.重排链表
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/26# @Author: xfLi# The file..."""问题分析:(1)把链表转换成列表数组。(2)借助列表数组的索引,直接进行连接,即可。"""def reorderList(head): if not head: retu...原创 2019-03-26 21:55:05 · 197 阅读 · 0 评论 -
【LeetCode】147.对链表进行插入排序
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/26# @Author: xfLi# The file...class ListNode: def __init__(self, x): self.val = x self.next = Nonedef insertionSor...原创 2019-03-26 21:56:32 · 194 阅读 · 0 评论 -
【LeetCode】160.相交链表
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/26# @Author: xfLi# The file..."""问题分析:与环形链表Ⅱ相似,两个指针追逐"""def getIntersectionNode(headA, headB): if not headA and not headB: ...原创 2019-03-26 21:57:33 · 208 阅读 · 0 评论 -
【LeetCode】203.移除链表元素
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/26# @Author: xfLi# The file...def removeElements(head, val): if not head: return head # 因为有可能头结点会被删除,所以将头结点放到最后最后处理 ...原创 2019-03-26 21:58:52 · 628 阅读 · 0 评论 -
【LeetCode】2.两数相加
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/22# @Author: xfLi# The file...class ListNode: def __init__(self, x): self.val = x self.next = Nonedef addTwoNumbe...原创 2019-03-24 11:04:05 · 222 阅读 · 0 评论 -
【LeetCode】61.旋转链表
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/23# @Author: xfLi# The file..."""问题分析:(1)先用一个指针,遍历一遍链表,求出长度,并在结尾指向头结点,形成环形两边。(2)再用一个指针,遍历一遍环形链表,找到分割位置,切开返回即可。"""class ListNode: ...原创 2019-03-24 11:05:51 · 130 阅读 · 0 评论 -
【LeetCode】82.删除排序链表中的重复元素 II
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/23# @Author: xfLi# The file..."""问题分析:(1)当遇到重复的节点,循环next到最后一个重复节点(2)对重复节点做标记"""class ListNode: def __init__(self, x): ...原创 2019-03-24 11:07:12 · 392 阅读 · 0 评论 -
【LeetCode】86.分隔链表
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/24# @Author: xfLi# The file..."""问题分析:设置两个指针,h1和h2,遍历链表形成两个子链表,h1存放小于x的节点,h2存放大于等于x的节点。"""class ListNode: def __init__(self, x)...原创 2019-03-24 11:30:28 · 280 阅读 · 0 评论 -
【LeetCode】234.回文链表
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/27# @Author: xfLi# The file..."""问题分析:方法一:使用列表比较方法二:(1)设置快慢指针(fast,slow),当fast到达尾部,slow到达链表中心(2)用slow与head指针循环比较,相同即为回文链表"""def...原创 2019-03-27 21:55:36 · 195 阅读 · 0 评论 -
【LeetCode】141.环形链表
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/26# @Author: xfLi# The file...class ListNode: def __init__(self, x): self.val = x self.next = Nonedef hasCycle(he...原创 2019-03-26 21:52:44 · 139 阅读 · 0 评论 -
【LeetCode】343.整数拆分
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/18# @Author: xfLi# The file...def integerBreak(n): if n < 4: return n - 1 dp = [0] * (n+1) dp[2] = 2 dp[3] = ...原创 2019-03-18 22:06:06 · 555 阅读 · 0 评论 -
【LeetCode】292.Nim游戏
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/12# @Author: xfLi# The file..."""问题分析:(1)首先,你第一个开始拿石头,这个很重要的。(2)看例子,(你)(他,你)、(他,你)... ...(他,你)。第一个括号是你第一次拿石头,后面的括号是你们两个轮流拿石头。因为每次最多可...原创 2019-03-13 17:31:21 · 180 阅读 · 0 评论 -
【LeetCode】319.灯泡开关
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/12# @Author: xfLi# The file...import mathdef bulbSwitch(n): return int(math.sqrt(n))if __name__ == '__main__': n = 6 re...原创 2019-03-13 17:32:25 · 302 阅读 · 0 评论 -
【LeetCode】859. 亲密字符串
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time: 2019/3/13# @Author: xfLi# The file...def buddyStrings(A, B): if len(A) != len(B): return False if A == B: # 相等情况 seen = set()...原创 2019-03-13 17:33:53 · 270 阅读 · 0 评论