算法题
xgyyxs
这个作者很懒,什么都没留下…
展开
-
【算法题】Leetcode 974--和可被 K 整除的子数组--python实现
思路:同余+哈希表同余定理:给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,那么就称整数a与b对模m同余,记作a≡b(mod m)。令 P[i] = A[0] + A[1] + … + A[i]。那么,每个连续子数组的和 sum(i, j) 就可以写成 P[j] - P[i-1] 。那么判断子数组的和能否被 K 整除就可以写成:(P[j] - P[i-1])%K == 0根...原创 2020-04-11 14:36:15 · 410 阅读 · 0 评论 -
【算法题】剑指offer汇总--题题多解法--python实现
目录未参考剑指offer上面的思路3. 数组中的重复数字4.二维数组中的查找5.替换空格6 从尾到头打印链表7 重建二叉树8 二叉树的下一个节点9 用两个栈实现队列10 斐波那契数列11 旋转数组的最小数字15 二进制中1的个数16 数值的整数次方18.2 删除链表中重复的节点19.正则表达式匹配20.表示数值的字符串21 调整数组顺序使奇数位于偶数前面22 链表中的倒数第k个节点23.链表中环的...原创 2020-03-29 17:07:45 · 546 阅读 · 0 评论 -
【算法题】剑指offer之栈的压入、弹出序列--python实现
栈的压入、弹出序列思路:如果popV是压入栈序列pushV的弹出序列应满足下列的规律:该规律用白话叙述不容易理解,通过下面的例子进行解释pushV = [1,2,3,4,5]popV1 = [4,5,3,2,1]popV2 = [4,3,5,1,2]popV1是pushV的弹出序列,popV2不可能是pushV的弹出序列。首先,我们看弹出序列的的首元素,popV1和popV2都为...原创 2020-03-09 20:36:39 · 212 阅读 · 0 评论 -
【算法题】剑指offer之 包含min函数的栈--python实现
包含min函数的栈"""思路:得到最小元素min函数的复杂度为O(1)建立一个辅助栈stack2,每当压入stack1的元素小于辅助栈stack2时,同时将元素压入stack2在出栈时,当在stack1的栈顶元素于辅助栈stack2的栈顶元素相等时,辅助栈也需要进行pop操作"""# -*- coding:utf-8 -*-class Solution: def __in...原创 2020-03-09 16:34:46 · 172 阅读 · 0 评论 -
【算法题】剑指offer之顺时针打印矩阵-python实现
顺时针打印矩阵对于下面代码的两点解释1.pop对于矩阵而言能否pop出某一行?res += matrix.pop(0)经过资料查找,所有的解释都是同一种说法:pop只是对于list进行操作,每次只能pop出一个元素。但是经过代码测试,pop函数可以pop出矩阵/二维数组的某一行(pop出某一列需要借助for循环)测试代码如下:a = [[1,2,3,4],[5,6,7,8],[9,...原创 2020-03-09 11:01:14 · 275 阅读 · 0 评论 -
【算法题】剑指offer之调整数组顺序使奇数位于偶数前面--python实现
调整数组顺序使奇数位于偶数前面# -*- coding:utf-8 -*-class Solution: def reOrderArray(self, array): # write code here single = [] double = [] for i in array: if i % ...原创 2020-03-07 14:48:23 · 197 阅读 · 0 评论 -
【算法题】剑指offer数值的整数次方--python实现
数值的整数次方快速幂法:快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N)# -*- coding:utf-8 -*-class Solution: def Power(self, base, exponent): # write code here """ 法一:快速幂法 """ #用...原创 2020-03-07 14:47:21 · 125 阅读 · 0 评论 -
【算法题】剑指offer之二进制中1的个数--python实现
二进制中1的个数下面代码中有两个比较神奇的操作: 操作一 if n < 0: n = n & 0xffffffff在Python中,数的大小是可以无限扩大的,不像c++中,数超过32位会溢出。所以对于一个负数而言,进行了这个操作,实际上是提取了负数(在计算机中以补码形式存在)的后32位,前面的任意位则变成了0。比如说 -1,一开始是...原创 2020-03-06 15:55:18 · 206 阅读 · 0 评论 -
【算法题】剑指offer之递归与循环--python实现
斐波那契数列斐波那契数列定义:从第3项开始,每一项都等于前两项之和。F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)标准斐波那契数列(f(1)=1、f(2)=1))# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here c...原创 2020-03-05 11:17:59 · 158 阅读 · 0 评论 -
【算法题】剑指offer之查找和排序--python实现
旋转数组的最小数字# -*- coding:utf-8 -*-class Solution: def minNumberInRotateArray(self, rotateArray): # write code here if not rotateArray: return None if len(rotate...原创 2020-03-05 09:17:58 · 123 阅读 · 0 评论 -
【算法题】剑指offer之堆和队列--python实现
用两个栈实现队列题目分析栈:先进后出队列:先进先出完成队列的push和pop操作,即实现头删和尾插。首先建立两个栈,s1、s2将队列中的元素“abcd”压入s1中,此时s2为空将s1中的元素pop进s2中,此时pop一下s2中的元素,就可以达到和队列删除数据一样的顺序了当s2只pop了一个元素a时(未pop完所有元素),s1中可能还会插入元素e,这时如果将s1中的元素e插入s...原创 2020-03-04 16:21:25 · 111 阅读 · 0 评论 -
【算法题】剑指offer之二叉树--python实现
重建二叉树class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: # 返回构造的TreeNode根节点 def reConstructBinaryTree(self, pre...原创 2020-03-03 16:31:29 · 261 阅读 · 0 评论 -
【算法题】剑指offer之链表--python实现
class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here res=[] while listNode: res.append(listNode.val) ...原创 2020-02-26 16:37:51 · 197 阅读 · 0 评论 -
【算法题】剑指offer之字符串--python实现
# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # write code here ss = "" for i in s: if i == " ": ss = ss + "%2...原创 2020-02-25 21:39:20 · 132 阅读 · 0 评论 -
【算法题】剑指offer之数组--python实现
# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here rows = len(array) cols = len(array[0]) #此时应该用or不能用and ...原创 2020-02-25 21:37:13 · 94 阅读 · 0 评论