算法基础
Cris_Lee卡卡卡
https://github.com/lrs1353281004
展开
-
leetcode题解记录-622设计循环队列(python3)
题目设计循环队列题目链接官方题解关键词队列,数组代码记录class MyCircularQueue: def __init__(self, k: int): """ Initialize your data structure here. Set the size of the queue to be k. """ self.queue=[None for i in range(k)] self.head原创 2020-10-21 18:51:57 · 222 阅读 · 1 评论 -
leetcode题解记录-138复制带随机指针的链表(python3)
题目复制带随机指针的链表题目链接官方题解关键词链表代码记录"""# Definition for a Node.class Node: def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None): self.val = int(x) self.next = next self.random = random"""class Solution:原创 2020-10-20 11:21:44 · 139 阅读 · 0 评论 -
leetcode题解记录-844比较含退格的字符串(python3)
题目比较含退格的字符串题目链接官方题解关键词字符串,双指针代码记录方法一 重构字符串两个字符串长度分别为N,M时间复杂度O(N+M),空间复杂度O(N+M)class Solution: def backspaceCompare(self, S: str, T: str) -> bool: def transfer_str(s): res=[] for i in range(len(s)): cur=s[i]原创 2020-10-19 17:16:07 · 152 阅读 · 0 评论 -
leetcode题解记录-21合并两个有序链表(python3)
题目合并两个有序链表题目链接官方题解关键词链表代码记录# Definition for singly-linked list.class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextclass Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: import原创 2020-10-16 19:29:00 · 191 阅读 · 0 评论 -
leetcode题解记录-707设计链表(python3)
题目设计链表题目链接官方题解关键词单链表,双链表代码记录方法一 单链表class ListNode: def __init__(self,val): self.val=val self.next=Noneclass MyLinkedList: def __init__(self): """ Initialize your data structure here. """ sel原创 2020-10-16 17:21:08 · 320 阅读 · 0 评论 -
leetcode题解记录-977有序数组的平方(python3)
题目有序数组的平方题目链接官方题解关键词单调栈代码记录此处记录一下单调栈的写法,与官方题解方法不同。class Solution: def sortedSquares(self, A: List[int]) -> List[int]: stack=[] res=[] for n in A: if not stack: stack.append(n) else: if abs(n)<=abs(原创 2020-10-16 14:03:58 · 148 阅读 · 0 评论 -
leetcode题解记录-234回文链表(python3)
题目回文链表题目链接官方题解关键词链表代码记录此解法时间复杂度O(n),空间复杂度O(1)。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def isPalindrome(self, head: ListNode) -> bo原创 2020-10-15 20:30:16 · 185 阅读 · 0 评论 -
leetcode题解记录-328奇偶链表(python3)
题目奇偶链表题目链接官方题解关键词链表代码记录# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def oddEvenList(self, head: ListNode) -> ListNode:原创 2020-10-15 17:07:23 · 116 阅读 · 0 评论 -
leetcode题解记录-116填充每个节点的下一个右侧节点指针(python3)
题目填充每个节点的下一个右侧节点指针题目链接官方题解关键词完美二叉树,层次遍历代码记录方法一 层次遍历"""# Definition for a Node.class Node: def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None): self.val = val self.left = left原创 2020-10-15 15:49:41 · 172 阅读 · 0 评论 -
Leetcode-695.最大岛屿面积(DFS 与 BFS 解法,python3)
题目描述给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/max-area-of-islandDFS解法思路说明(摘自leetcode)原创 2020-05-31 20:35:08 · 692 阅读 · 0 评论 -
剑指offer(二叉搜索树的第k个结点)-python2实现及解析
题目描述:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。题目来源:牛客网代码实现(python2)# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# ...原创 2019-03-03 11:57:36 · 559 阅读 · 0 评论 -
字符串匹配KMP算法的基本原理及python实现
KMP算法是字符串匹配问题中非常经典的算法。最近查找了很多相关资料,直到看到下面这两篇博客,终于理解了KMP的基本原理。 KMP算法的核心即是计算字符串M每一个位置之前的字符串的前缀和后缀公共部分的最大长度。获得M每一个位置的最大公共长度之后,就可以利用该最大公共长度快速和字符串S比较。当每次比较到两个字符串的字符不同时,我们就可以根据最大公共长度将字符串M向右移动,接着继续比较下一个位置。 ...原创 2018-09-11 22:08:18 · 871 阅读 · 3 评论 -
剑指offer - 和为S的连续正数序列 (python 实现)
问题描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? 输出描述: 输出所有和为S的连续正数序列。序列内按照从小至...原创 2018-07-30 23:30:34 · 289 阅读 · 0 评论 -
大数处理-大数相减问题 (python 编程实现)
问题描述两个长度超出常规整形变量上限的大数相减,避免使用各语言内置库。 输入 两个代表整数的字符串 a 和 b,长度超过百位。规定 a>=b,a, b > 0。 输出 返回表示结果整数的字符串。实现思路我的做法比较简单,可能不是最优方案。 就是按照我们手写除法时的方法,两个数字末位对齐,从后开始,按位相减,不够减时向前位借一。 最终结果需要去除首端的0.如果所有...原创 2018-07-26 22:12:35 · 9023 阅读 · 0 评论 -
剑指offer-数组中的逆序对计算(python实现)
剑指offer-数组中的逆序对计算(牛客网题目,python实现)问题描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 (来源-牛客网)解题思路:类似归并排序(1)递归拆分数组,直至无法拆分 (2)按从小到大顺...原创 2018-07-15 21:48:16 · 3856 阅读 · 0 评论 -
剑指offer-数组中只出现一次的数字(python实现)
剑指offer-数组中只出现一次的数字(python实现)参考牛客网讨论区思路及编程实现 https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811问题描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。实现思路Hash表方法大家都能...转载 2018-07-24 16:51:20 · 1826 阅读 · 0 评论 -
动态规划实例--数组不连续取数问题(python 实现)
问题: 给定一个长度为N的一维数组 举例:输入:[1,3,5,2,1,9,4,3,7] 取数规则:不允许取连续的两个数。 求:这个数组在给定规则下取到数字的最大和是? 本例中,答案为:1+5+9+7=22解题思路 新建一个与输入数组input_num大小相同的数组max_num 记max_num[i]为前i+1天的最大训练天数(因为数组第一项是m...原创 2018-04-26 15:18:51 · 3563 阅读 · 2 评论 -
连通子图与连通子图直径的求解-python实现
背景描述连通子图提供一个文本,文本中每行记录了两个字母,代表一个连接。这个文本记录了一个无向图。 举例: A,B 代表A,B之间有连接。 每一个有连接点的子集组成了一个连通子图。 比如下面这个文本中: A,B B,C C,A D,E C,F F,G 有两个连通子图[‘A’, ‘B’, ‘C’, ‘F’, ‘G’] 和 [‘D’, ‘E’]连通子图直径连通...原创 2018-04-23 13:11:17 · 5425 阅读 · 3 评论 -
常见排序算法总结与实现(python)
常见排序算法总结与python实现常见排序算法总结与python实现插入排序:代码实现冒泡排序:代码实现快速排序代码实现堆排序代码实现归并排序代码实现 说明: 稳定性定义:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列...原创 2018-03-15 15:40:30 · 461 阅读 · 0 评论