leetcode
WYXHAHAHA123
这个作者很懒,什么都没留下…
展开
-
leetcode刷题26 Remove Duplicates from Sorted Array
class Solution(object): def removeDuplicates(self, nums): ''' :param nums: 列表,python中的列表就是顺序表,即C中顺序存储的数组 :return: 去除重复元素的列表长度 编写代码之前要先想清楚怎么做,想清楚每个细节之后再打代码 ...原创 2019-03-14 20:41:08 · 84 阅读 · 0 评论 -
leetcode刷题 27. Remove Element
class Solution: def removeElement(self, nums,val): ''' :param nums: :param val: :return: 数组并不是排序好的,故而只能一个个元素地比较 (1)如果数组为None,则不修改数组,返回0 (2...原创 2019-03-14 21:04:15 · 105 阅读 · 0 评论 -
leetcode 28. Implement strStr()
class Solution: def strStr(self, haystack: str, needle: str) -> int: ''' :param haystack: :param needle: :return: 用python实现字符串匹配问题 (1)如果索要查找的字符串...原创 2019-03-14 21:28:02 · 93 阅读 · 0 评论 -
动态规划(一)
def find_max_sum(arr): opt=[0]*len(arr) opt[0]=arr[0] opt[1]=max(arr[0],arr[1]) for i in range(2,len(arr)): opt[i]=max(opt[i-1],opt[i-2]+arr[i]) print(opt) return...原创 2019-03-19 21:38:23 · 116 阅读 · 0 评论 -
斐波那契数列
def fib(n): fib=[0]*(n+1) fib[0]=0 fib[1]=1 for i in range(2,len(fib)): fib[i]=fib[i-1]+fib[i-2] return fib[1:]if __name__=='__main__': n=12 fib_seq=fib(n) ...原创 2019-03-19 21:38:46 · 234 阅读 · 0 评论 -
python 无向图最短路径之Dijkstra算法
无向图:在数据结构中的无向图通常使用邻接矩阵表示无向图的邻接矩阵是对称矩阵,有向图的邻接矩阵不是对称矩阵。共有5个顶点(nodes),7条边(vertices)其邻接矩阵为:num_node*num_node,矩阵中的数值表示两个相连接的节点的边的权值节点 A B C D E A 0 6 inf 1 inf...原创 2019-04-29 17:17:10 · 11628 阅读 · 0 评论 -
python 数组中的逆序对
'''在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数...原创 2019-05-06 20:18:28 · 1626 阅读 · 0 评论 -
python 和为S的连续正数序列
'''题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的...原创 2019-05-07 10:20:01 · 292 阅读 · 0 评论 -
python 构建乘积数组
'''题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。'''# -*- coding:utf-8 -*-class Solution: def multiply(self, A): # write c...原创 2019-05-07 11:22:51 · 316 阅读 · 0 评论 -
python 删除链表中重复的结点
'''题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5'''# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# ...原创 2019-05-07 14:06:38 · 624 阅读 · 0 评论 -
python 对称的二叉树
'''题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。'''# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2019-05-07 15:15:53 · 373 阅读 · 0 评论 -
leetcode53 Maximum Subarray
#coding=gbk'''Maximum Subarray给定整数数组,找到具有最大和的子序列(子序列的长度任意,至少为1),并返回最大的子序列之和思路:创建二维数组,数组中的第i行表示从第i个数顺次加和的数值这样做的时间复杂度是O(n**2),不符合题目要求思路一:动态规划使用时间复杂度为O(n),即从第0个元素向后累加,如果和大于0,则继续向后,否则,连续子序列的和清零...原创 2019-05-15 14:38:38 · 90 阅读 · 0 评论 -
leetcode 67. Add Binary
#coding=gbk'''leetcode66 将一个多位数的非负整数存储在一个非空数组中,将对整数加1的结果返回数组Input: [4,3,2,1]Output: [4,3,2,2]Explanation: The array represents the integer 4321.'''class Solution: def plusOne(self, digits)...原创 2019-05-15 15:17:19 · 103 阅读 · 0 评论 -
leetcode 55. Jump Game
#coding=gbk'''leetcode 56. Merge Intervals给定一维数组,数组中的每个元素表示在该索引位置上最多(小于等于)跳跃的高度数组中的每个元素可以理解成是在该索引位置(台阶上)可以跳跃的高度如果能够到达最后一个元素,则返回True,否则返回False这种方法总是报时间消耗太长'''# class Solution:# def canJu...原创 2019-05-15 16:13:02 · 137 阅读 · 0 评论 -
数据结构与算法 栈
数据结构:栈的基本功能接口并基于Vector模板类作为父类,产生子类Stack,以及栈的典型应用from Vector import Vectorclass Stack(Vector): def __init__(self): super(Stack,self).__init__() # 实现的栈 class 继承自 向量模板类 ...原创 2019-05-13 17:31:31 · 149 阅读 · 0 评论 -
leetcode 56. Merge Intervals
#coding=gbk'''leetcode 56. Merge Intervals将两个可能具有overlap的区间合并 merge'''class Solution: def merge(self, intervals): if len(intervals)<=1: return intervals else:...原创 2019-05-15 17:25:01 · 100 阅读 · 0 评论 -
leetcode 67. Add Binary
#coding=gbk'''leetcode 67. Add Binary将两个字符串以二进制的形式相加'''class Solution: def addBinary(self, a: str, b: str) -> str: # 以二进制的形式将两个字符串相加 # 首先将两个字符串对齐 if len(a)>l...原创 2019-05-15 17:44:27 · 114 阅读 · 0 评论 -
leetcode 69. Sqrt(x)
#coding=gbk'''leetcode 69. Sqrt(x)实现对于整数求平方根,并对求出的平方根取整数Implement int sqrt(int x).使用二分查找算法'''class Solution: def mySqrt(self, x: int) -> int: start=0 end=x//2+2 ...原创 2019-05-15 20:01:58 · 130 阅读 · 0 评论 -
leetcode 70. Climbing Stairs
#coding=gbk'''给定一个正整数n,每次只能加1或者加2,求问有多少种不同的组合方式,是的最终能够和为n这就是斐波那契数列 fib(n)=fib(n-1)+fin(n-2)边界条件 fib(2)=2 fib(1)=1'''class Solution: def climbStairs(self, n: int) -> int: if ...原创 2019-05-15 20:12:19 · 101 阅读 · 0 评论 -
leetcode 83. Remove Duplicates from Sorted List
#coding=gbk'''给定排序好的链表,对于链表中的元素数值进行去重'''# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: ...原创 2019-05-15 20:43:59 · 135 阅读 · 0 评论 -
C++ 一
#include<iostream>using namespace std;/*if 语句1.输入两个整数,然后比较它们的大小当有if-else语句嵌套的时候,C++并不是像Python那样用语句的缩进来匹配if 和对应的else而是用{}来匹配,在写if else的嵌套语句时,一定不要把匹配关系弄错*/void func_1(){ int x...原创 2019-05-16 16:06:13 · 297 阅读 · 0 评论 -
leetcode11 Container With Most Water
'''leetcode11 找到能够包含最多的水的容积给定n个非负整数构成长度为n的列表,列表中对应索引位置处的值表示在位置为i(i=0,1,……n-1)处墙的高度求两个墙能够包围的最大面积。算法1:设置两个指针start和endstart初始值为0,end初始值为length-1则当前的面积为 min(height[end],height[start])*(end-...原创 2019-05-21 20:08:23 · 150 阅读 · 0 评论 -
leetcode 三个数的和
# '''# leetcode 15 3个数的和# 给定数组,在数组中找到3个元素,它们的和为0,# 输出二维数组,数组中的每个元素是长度为3的列表## 这就是美团一面的面试题啊,手撕代码# 最终的计算复杂度O(n**2)。# 首先需要对原始数组进行排序# 对于输入数组中的每个元素,以当前元素为基准,对原始数组进行从前向后遍历(遍历过程不能再包含当前元素)# 使得在删除基准...原创 2019-05-21 20:30:56 · 181 阅读 · 0 评论 -
leetcode 16. 3Sum Closest
https://leetcode.com/problems/3sum-closest/'''给定输入数组nums,从数组中选出3个数,使得数值之和与target最为接近'''class Solution: def threeSumClosest(self, nums, target: int) -> int: def insert_sort(nums)...原创 2019-05-21 21:21:08 · 141 阅读 · 0 评论 -
python lambda实现阶乘运算
a=5# 在python中实现使用lambda求n的阶乘# 方式1,递归f = lambda n: f(n-1) * n if n>=2 else 1print(f(5))# 方式二 reducefrom functools import reducef_5=reduce(lambda x,y:x*y,range(1,6))print(f_5)# 120# 120...原创 2019-05-12 22:41:06 · 3472 阅读 · 0 评论 -
leetcode 18. 4Sum
'''给定输入数组,输出4元对列表,列表中每个元素是一个列表,子列表数值之和为target'''class Solution: def fourSum(self, nums, target: int): def select_sort(nums): # 对输入数据进行选择排序 # 选择排序算法是对冒泡排序算法的改进 ...原创 2019-05-22 20:58:31 · 140 阅读 · 0 评论 -
leetcode 33. Search in Rotated Sorted Array
'''leetcode 33在以某个索引位置为中心,对数组进行旋转后,得到算法的输入数组给定目标值,要求以时间复杂度 O(log N) 从旋转数组中查找出目标值如果找不到,则返回-1,找到,则返回目标值在旋转后的数组的位置算法:首先根据target目标值和数组第一个和最后一个元素的大小比较,确定搜索的方向 如果target>nums[0] and target<...原创 2019-05-22 22:20:54 · 110 阅读 · 0 评论 -
leetcode 2. 两数相加
'''给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&g...原创 2019-05-30 16:10:22 · 106 阅读 · 0 评论 -
python实现二叉树
二叉树的先序遍历的迭代形式二叉树中序遍历的迭代形式class BinNode(object):#二叉树的基本组成单位是二叉树中的节点 def __init__(self,e): self.data=e self.parent=None self.lChild=None self.rChild=N...原创 2019-06-07 14:46:29 · 898 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串
'''给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。答案必须是子字符串的长度,即原始字符串中的连续切片。而并不是简单地从原始字符串中寻找不重复的字符个数substring 和 subsequence 的区别substring 必须是从原始字符串中连续索引切片得到的子字符串subsequence 可以从原始字符串中跳跃地挑选出字符,构成新的子序列输入: "pw...原创 2019-05-30 17:40:19 · 133 阅读 · 0 评论 -
leetcode 5. 最长回文子串
'''给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。回文子串有两种对称形式:CABAC 即沿着中心的字符B中心对称 ABBA 即没有中心的字符,而是直接轴对称对于字符串中的每个字符,以它为中心寻找上述两种方式所能扩散得到的最长子串再比较长度的大小,以得到最长的回文子串'''clas...原创 2019-05-30 18:16:39 · 110 阅读 · 0 评论 -
leetcode 34. Find First and Last Position of Element in Sorted Array
'''给定输入的整数数组 nums ,其中的数值升序排列找到目标值在整数数组中出现的索引下标范围Example 1:Input: nums = [5,7,7,8,8,10], target = 8Output: [3,4]Example 2:Input: nums = [5,7,7,8,8,10], target = 6Output: [-1,-1]解法:二分查找'''...原创 2019-05-23 21:08:30 · 114 阅读 · 0 评论 -
leetcode59 螺旋矩阵 II
二维数组/矩阵的处理方法:每走完一圈/一层作为一个处理单元,在每层中,需要处理矩阵的各个边。'''leetcode 59. 螺旋矩阵 II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]'''class Solution:...原创 2019-05-28 14:59:04 · 159 阅读 · 0 评论 -
leetcode 62. 不同路径
'''一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。算法:使用二维的动态规划解决初始化的二维矩阵,第0行的所有元素和第0列的所有元素都是1,然后从第1,2,……直到第m行,每一行从第1个元素开始一直计算到第n个元素result[i][j]=...原创 2019-05-28 16:15:07 · 96 阅读 · 0 评论 -
leetcode 63. 不同路径 II
'''一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?'''class Solution: def uniquePathsWithObstacles(self, obstac...原创 2019-05-28 16:50:47 · 118 阅读 · 0 评论 -
leetcode 64. 最小路径和
'''给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。算法:仍然是二维动态规划直接在grid二维数组上进行累加首先:对于第0行和第0列的元素,没有别的路径可以走,故而只能是顺序按行(按列累加)其次:对于非首行或者非首列的元素,grid[i][j]=min(grid[i][j-1],grid...原创 2019-05-28 17:03:08 · 134 阅读 · 0 评论 -
leetcode 73. 矩阵置零
'''给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。算法:用额外的列表存储应该被变成0的行序号和列序号,再根据这些信息对原始的数组置0'''class Solution: def setZeroes(self, matrix) -> None: """ Do not return ...原创 2019-05-28 17:19:34 · 100 阅读 · 0 评论 -
leetcode 74. 搜索二维矩阵
'''编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true这是剑指offer第一题''...原创 2019-05-28 17:35:17 · 115 阅读 · 0 评论 -
leetcode 75. 颜色分类
'''给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。算法:三指针法初始化三个指针:zeroIndex 表示从[0,zeroIndex) 区间范围内的元素都是0,即子区间中数值作为0...原创 2019-05-28 20:08:20 · 225 阅读 · 0 评论 -
leetcode 119 杨辉三角II
'''leetcode 119 杨辉三角II给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。实用组合数公式,将时间复杂度减少成O(N)杨辉三角形的第n行第i列的数值为C(n,i)=n!/(i!(n-i)!)对于第i行只用计算到 [0,int(i/2+0.5))组合数公式的递推形式: C(n,k+1)=C(n,k)*(n-k)/(k+1)'''class S...原创 2019-05-29 13:13:41 · 141 阅读 · 0 评论