
常规算法题目
UESTC_20172222
向上的路,并不拥挤。 拥挤是因为,大部分人选择了安逸。
展开
-
两个排序数组的中位数
leetcode_Q004: 两个排序数组的中位数问题描述:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。你可以假设 nums1 和 nums2 不同时为空。解题思路解题思想来源:”数据结构”中,对长度分别是m,n的两个有序链表进行合并,该算法的时间复杂度正好是...原创 2018-08-23 16:11:47 · 142 阅读 · 0 评论 -
【leetcode】124. 二叉树中的最大路径和
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。#解题思路最大路径和:根据当前节点的角色,路径和可分为两种情况:一定要注意是路径!!!!!!!当前节点为根节点时,1.只有当前节点2.当前节点+左子树3.当前节点+右子书4.当前节点+左右子树这四种情况的最大值即为以当前节点为...原创 2019-03-23 18:50:29 · 522 阅读 · 0 评论 -
【数据结构算法】从1到n 中所有的数中 出现数字x的次数
题目从1到n 中所有的数中 出现数字x的次数,请注意,这里的x的范围是(0,9】思路如果第i位(自右至左,从1开始标号)上的数字为0,则第i位可能出现1的次数由更高位决定(若没有高位,视高位为0),等于更高位数字X当前位数的权重10i-1。如果第i位上的数字为x,则第i位上可能出现x的次数不仅受更高位影响,还受低位影响(若没有低位,视低位为0),等于更高位数字X当前位数的权重10i...原创 2019-03-31 11:15:03 · 593 阅读 · 0 评论 -
【leetcode】86. 分隔链表
题目给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5解题思路使用两个链表来分别存储小于x的和大于等于x的,然后将两...原创 2019-03-24 17:56:50 · 166 阅读 · 0 评论 -
【数据结构算法】二进制中1的个数
题目输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路首先明白一个整数类型的(int)是4个字节,也就是32位.然后分开处理:对于大于等于0的数:直接转换成二进制数可以了,注意高位空的用0来补充,一定要是32位:例如4的二进制数“[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...原创 2019-03-27 16:06:14 · 202 阅读 · 0 评论 -
【数据结构算法】二叉搜索树转双向链表
题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路就是简单的一个二叉树中序遍历,主要是明白什么是二叉搜索树二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不...原创 2019-03-27 17:11:28 · 318 阅读 · 0 评论 -
【数据结构算法】判断一个树是否是另一个树的子结构
题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None...原创 2019-03-28 00:11:05 · 456 阅读 · 0 评论 -
【数据结构算法】二叉树中和为某一值的路径
题目输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解法# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x...原创 2019-03-29 00:13:38 · 211 阅读 · 0 评论 -
【数据结构算法】和为某一数值的连续正整数
题目小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!解法# -*- coding:utf-8 -*...原创 2019-04-02 16:51:35 · 309 阅读 · 0 评论 -
【数据结构算法】两个单向链表的第一个节点
题目输入两个链表,找出它们的第一个公共结点。解题思路因为是单向链表,所以只要有一个节点相同,那么后面的所有节点都相同!!!!!!!!利用这个思路:**找出2个链表的长度,然后让长的先走两个链表的长度差,**然后再一起走(因为2个链表用公共的尾部)解法# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):...原创 2019-04-02 16:57:18 · 206 阅读 · 0 评论 -
【数据结构算法】数组中的逆序对
题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007思路整体思路:归并排序过程:先把数组分割成子数组,先统计出子数组内部的逆序对的数目,然后再统计出两个相邻子数组之间的逆序对的数目。在统计逆序对的过程中,还需要对数组进行排序。如果对排序...原创 2019-04-02 17:03:33 · 444 阅读 · 0 评论 -
【数据结构算法】编辑距离的加强版(允许相邻字符串进行交换)
思路就是加一个判断,如果满足交换,则尝试交换(即:word1[i] = word2[j - 1] and word1[i - 1] = word2[j] ),不满足的话则退化传统的3种操作class Solution: @staticmethod def minDistance( word1, word2): """ :type word1: ...原创 2019-04-17 18:06:08 · 979 阅读 · 0 评论 -
【数据结构算法】矩阵中的最长递增路径
题目给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ [3,4,5],...原创 2019-04-27 16:39:46 · 986 阅读 · 0 评论 -
【数据结构算法】只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题知识在python中:按位的运算,都按位的运算,都是把参加运算的数的二进制形式进行运算。1.与运算...原创 2019-04-30 19:51:08 · 225 阅读 · 0 评论 -
【数据结构算法】求众数
题目给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2解题思路解法1统计每个数出现的次数,求最大的那个解法2众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。所以可...原创 2019-04-30 20:20:13 · 1338 阅读 · 0 评论 -
【数据结构算法】搜索二维矩阵 II
题目搜索二维矩阵 II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, ...原创 2019-04-30 20:46:53 · 241 阅读 · 0 评论 -
【数据结构算法】 合并两个有序数组
题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2019-04-30 21:18:42 · 475 阅读 · 0 评论 -
【数据结构算法】有向图的遍历应用--抖音网红
题目‘’’需要找到所有的抖音红人,用户数为N,关注关系有M对。(A,B)代表A关注了B。关注关系具有传递关系,比如有(A,B)(B,C),那么认为A间接关注了C。如果一个用户被所有N个用户直接或间接关注,那么我们认为这个用户就是抖音红人。求抖音红人的总数。输入:**第一行,整数N第二行,整数M第三行,M*2个整数,代表M个关注关系这一题是一个有向图的遍历问题‘’’解题思路数据是...原创 2019-08-03 14:01:10 · 454 阅读 · 0 评论 -
【leetcode】102. 二叉树的层次遍历
题目描述解题思路就是一个简单的循环,不用递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solut...原创 2019-03-23 12:16:14 · 195 阅读 · 0 评论 -
【leetcode】93. 复原IP地址
题目给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]解题思路ip地址分为四节,每节取值范围在[0,255]对于取出的字符串,若它的第一位为’0’,那么它的长度只能为1,多位字符不能以0作为开头每次拿出[1,3]个字符,判断是否符合ip地址的条件...原创 2019-03-23 11:49:31 · 208 阅读 · 0 评论 -
【leetcode】149直线上最多的点
题目给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。解题思路来自这篇博客思路很简单,看代码给出2D平面中的n个坐标点,计算最多有多少个点在一条直线上一条直线可以用斜率表示,即如果已知(x1,y1),(x2,y2)(x1,y1),(x2,y2),那么斜率为(y2−y1)/(x2−x1)(y2−y1)/(x2−x1) ,所以固定一个点,然后遍历其他点,将不同的斜率到个...原创 2019-03-22 21:34:22 · 372 阅读 · 0 评论 -
最长回文子串--算法思想探讨和实现(python java)
最长回文子串–算法思想探讨回文串定义: 如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例: 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。12321 a aba abba aaaa tattarrattat(牛津英语词典中最长的回文单词)x=−b±b2−4ac−−−−−−−√2ax=−b±b2−4ac2a x = ...原创 2018-08-31 11:17:40 · 300 阅读 · 0 评论 -
leetcode 10 Regular Expression Matching(简单正则表达式匹配) python实现
这里先占个位置 周末的时候给补上自己这一题没有做出来参考1参考2参考3这几位播主写的都很好 所以 我这里先存着,我会把所有的博客都看完,所有的方法都用python实现一遍...原创 2018-10-11 20:14:41 · 125 阅读 · 0 评论 -
leetcode 11盛最多的水容器
题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示...原创 2018-10-14 13:09:46 · 173 阅读 · 0 评论 -
LeetCode 17 电话号码的字母组合 python实现
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序python实现,可以通过解题思路...原创 2018-10-18 11:30:27 · 1062 阅读 · 1 评论 -
字符串z字变换
题目描述 (字符串z字变换 leetcode上的题目) 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数: P A H N A P L S I I G Y I R 之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR" 实现一个将字符串进行指定行数变换的函数: string convert(string s, int numRo...原创 2018-10-08 17:10:56 · 511 阅读 · 0 评论 -
leetcode19 删除链表的倒数第N个节点&&&链表的数据结构定义
需要知道的在python中链表这种数据结构的定义的方式:class ListNode: def __init__(self,x): self.value=x self.next=Noneleetcode19 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3-...原创 2018-10-19 09:43:32 · 168 阅读 · 0 评论 -
判断一个整数是不是回文 python实现
题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:整...原创 2018-10-10 17:11:45 · 5583 阅读 · 0 评论 -
leetcode15和leetcode16 讲解和python实现
leetcode15 题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]...原创 2018-10-17 16:47:44 · 1086 阅读 · 0 评论 -
leetcode22 括号生成
题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()原创 2018-10-23 20:10:40 · 190 阅读 · 0 评论 -
leetcode23 合并 k 个排序链表思路讲解和python实现
题目描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6python实现解法1(会超时)类似于合并两个由于链表,这里同时合并多个(以前是同时比较2个,这里是同时比较多个),不...原创 2018-10-24 16:14:29 · 911 阅读 · 1 评论 -
通配符匹配_讲解和python3实现
题目描述给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输...原创 2018-12-12 20:55:50 · 3473 阅读 · 0 评论 -
字符串相乘(大数相乘) python实现
首先讲解 两个小技巧list 反转 reverse>>> l=[1,2,3,4,5,6]>>> l.reverse()>>> l[6, 5, 4, 3, 2, 1]str 反转 [::-1]>>> >>> s="abcde">>&原创 2018-12-06 22:18:13 · 2804 阅读 · 0 评论 -
计算两个字符串之间的距离--python3
距离给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删...原创 2019-02-22 15:49:26 · 3153 阅读 · 0 评论 -
十大经典排序算法 讲解,python3实现
重点推荐!!!这个网址可以看到各个算法的运行的直观过程,找到sort勉强推荐这个吧,前面的几个算法图解还好,后面的几个就不好了算法概述这部分内容来自这么大牛算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以...原创 2018-11-22 21:15:46 · 1365 阅读 · 0 评论 -
最短路径算法
这两位大佬写的都很好这位==大佬 == 的Dijkstra算法和Floyd算法写的都很好,不过后面的那个算法过程有点抽象,但是其代码写的很直观,看不懂的可以结合这位 大佬看看##这是我在刷题过程中的代码。放在这里,留着自己查看的哈import sysclass DGraph: def __init__(self,n): self.vertices=n ...原创 2019-03-07 22:59:24 · 200 阅读 · 0 评论 -
【leetcode】118 杨辉三角
题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]解题思路单纯的动态规划问题,没啥讲的class Solution(object): def generate(self, numRows): """ :type...原创 2019-03-24 18:48:23 · 146 阅读 · 0 评论 -
【数据结构算法】编辑距离
问题描述给定 2 个字符串 a, b. 编辑距离是将 a 转换为 b 的最少操作次数,操作只允许如下 3 种:插入一个字符,例如:fj -> fxj删除一个字符,例如:fxj -> fj替换一个字符,例如:jxj -> fyj解题思路用分治的思想解决比较简单,将复杂的问题分解成相似的子问题假设字符串 a, 共 m 位,从 a[1] 到 a[m]字符串 b, 共 n...原创 2019-03-29 20:41:00 · 354 阅读 · 0 评论 -
【数据结构算法】迷宫的最短路径 - BFS
题目给定一个大小为N*M的迷宫,由通道(’.’)和墙壁(’#’)组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置。试求出起点到终点的最小步数。(本题假定迷宫是有解的)解题思路是BFS和队列的结合应用结合代码看,更容易理解从起点开始,先将其加入队列,设置距离为0从队列首端取出位置,将从这个位置能够到达的位置加入队列,并且让这些位置的距离为上一个位置的...原创 2019-08-05 20:38:54 · 931 阅读 · 0 评论