- 博客(289)
- 资源 (5)
- 收藏
- 关注
原创 剑指offer面试题66. 构建乘积数组
题目描述给定一个数组 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]。不能使用除法。思路详见链接代码class Solution: def constructArr(self, a; List[int])->List[int]: b, tmp = [1]*len(a), 1 for i in range(1, len(a)): b[i] = b[i-1]*
2020-05-30 10:47:20
488
1
原创 剑指offer面试题65. 不用加减乘除做加法(位运算)
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。思路详见链接代码class Solution: def add(self, a:int, b:int)->int: x = 0xffffffff a, b = a & x, b & x while b != 0: a, b = (a ^ b), (a & b) << 1 & x return a if a <=
2020-05-30 10:46:42
472
1
原创 剑指offer面试题63. 股票的最大利润(动态规划)
题目描述假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?思路详见链接代码class Solution: def maxProfit(self, prices:List[int])->int: cost, profit = float("inf"), 0 for price in prices: cost = min(cost, price) profit = max(profit, price - cost) retur
2020-05-28 11:26:48
817
原创 剑指offer面试题64. 求1+2+…+n(逻辑符短路)(递归)
题目描述求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路详见链接代码class Solution: def __init__(self): self.res = 0 def sumNums(self, n:int)->int: n > 1 and self.sumNums(n-1) self.res += n return self.res复杂度时间复杂度 O(n)
2020-05-28 11:25:51
246
原创 Sklearn专题实战——针对Category特征进行分类
文章目录1.前言2.数据处理3.模型构建3.1.支持向量机3.2.贝叶斯4.网格搜索寻找最优结果5.保存模型+提取模型6.混淆矩阵查看分类效果1.前言上次回我们是对文本进行情感分类,这次将实战一个稍微复杂的Category分类,即针对每个文本分类处是属于什么类型的文本,如属于电子类、服装类等等。2.数据处理class Category: ELECTRONICS = "ELECTRONICS" BOOKS = "BOOKS" CLOTHING = "CLOTHING"
2020-05-27 15:33:54
1035
1
原创 剑指offer面试题61. 扑克牌中的顺子(排序)(遍历)
题目描述从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。思路详见链接代码class Solution: def isStraight(self, nums:List[int])->bool: joker = 0 nums.sort() for i in range(4): if nums[i] == 0: joker += 1
2020-05-27 15:32:37
275
1
原创 剑指offer面试题58 - II. 左旋转字符串(切片)(一行代码)
题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。思路详见链接代码class Solution: def reverseLeftWords(self, s:str, n:int)->str: return s[n:] + s[:n]复杂度时间复杂度 O(N) : 其中 N为字符串 s 的长度,字符串切片函数为线性时间复杂
2020-05-25 11:41:57
229
1
原创 剑指offer面试题58 - I. 翻转单词顺序(双指针)
题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。思路详见链接代码class Solution: def reverseWords(self, s:str) -> str: s = s.strip() #去除首尾空格 i = j = len(s) - 1 res = [] while i >= 0: w
2020-05-25 11:40:13
277
1
原创 Sklearn专题实战——数据处理+模型构建+网格搜索+保存(提取)模型
文章目录1.前言2.数据处理3.模型构建3.1.支持向量机3.2.决策树3.3.逻辑回归4.网格搜索寻找最优结果5.保存模型+提取模型1.前言针对Sklearn在前面已经通过代码实战讲解了其中的各个主要模块,现在将从整体的角度深度理解一下Sklearn, 本文主要以代码形式讲解,在代码中有注释,话不多说,开车!!!(请坐稳)数据链接密码:a6vy2.数据处理class Sentiment: NEGATIVE = "NEGATIVE" NEUTRAL = "NEUTRAL"
2020-05-25 11:37:44
1435
1
原创 剑指offer面试题55 - II. 平衡二叉树(后序遍历)(剪枝)
题目描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。思路详见链接代码class Solution: def isBalanced(self, root:TreeNode)->bool: def recur(root): if not root: return return 0 left = recur(root.left) if left == -1: return -1 ri
2020-05-23 16:14:45
311
原创 剑指offer面试题55 - I. 二叉树的深度(DFS)(递归)
题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。思路详见链接代码class Solution: def maxDepth(self, root:TreeNode)->int: if not root: return 0 return max(self.maxDepth(root.left),self.maxDepth(root.right)) + 1复杂度时间复杂度 O(N) :
2020-05-23 16:13:40
271
1
原创 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
题目描述给定一棵二叉搜索树,请找出其中第k大的节点。思路详见链接代码class Solution: def kthLargest(self, root:TreeNode, k:int)->int: def dfs(root): if not root: return dfs(root.right) if self.k == 0: return self.k -= 1 if self.k == 0: self.res = root.val
2020-05-21 10:45:20
294
1
原创 剑指offer面试题52. 两个链表的第一个公共节点(双指针法)
题目描述输入两个链表,找出它们的第一个公共节点。思路详见链接代码class Solution: def getIntersectionNode(self, headA:ListNode, headB:ListNode)->ListNode: node1, node2 = headA. headB while node1 != node2: node1 = node1.next if node1 else headB node2 = node2.next if node
2020-05-21 10:44:21
246
1
原创 剑指offer面试题50. 第一个只出现一次的字符(哈希表)
题目描述在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。思路详见链接代码class Solution: def firstUniqueChar(self, s:str)->str: dic = {} for c in s: dic[c] = not c in dic for c in s: if dic[c]: return c return ' '时间复杂度 O(N): N为字符串 s 的长度;需遍历 s 两轮
2020-05-19 20:24:38
234
1
原创 剑指offer面试题49. 丑数
题目描述我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。思路详见链接代码class Solution: def nthUglyNumber(self, n:int)->int: dp = [1]*n a, b, c = 0, 0, 0 for i in range(1,n): n2, n3, n5 = dp[a]*2, dp[b]*3, dp[c]*5 dp[i] = min(n2, n3, n5)
2020-05-17 19:55:18
301
3
原创 剑指offer面试题47. 礼物的最大价值(动态规划)
题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?思路详见链接代码class Solution: def maxValue(self, grid:List[List[int]])->int: m, n = len(grid), len(grid[0]) for j in range
2020-05-17 19:54:49
487
1
原创 剑指offer面试题42. 连续子数组的最大和(动态规划)
题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。思路详见链接代码class Solution: def maxSubArray(self, nums:List[int])->int: for i in range(1,len(nums)): nums[i] += max(nums[i-1],0) return max(nums)复杂度时间复杂度 O(N) : 线性遍历数组
2020-05-14 22:02:11
257
1
原创 剑指offer面试题40. 最小的k个数(sort函数)
题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。思路详见链接代码class Solution: def getLeastNumbers(self,arr:List[int],k:int)->List[int]: arr.sort() return arr[:k]复杂度sort()函数使用 Timsort 方法进行排序,时间复杂度O(NlogN)...
2020-05-13 21:26:44
235
1
原创 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。思路详见链接代码#class Node:# def __init__(self, val, left=None, right=None):# self.val = val# self.left = left# self.right = right class Solution: def treeToDoublyList(self,root:'None
2020-05-12 10:39:22
222
1
原创 剑指offer面试题35. 复杂链表的复制(DFS)(深拷贝)
题目描述请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。思路详见链接代码class Solution: def copyRandomList(self, head:'None')->'None': visited = {} #字典 def dfs(head): if not head: return None if hea
2020-05-12 10:38:29
249
1
原创 剑指offer面试题34. 二叉树中和为某一值的路径(先序遍历)(回溯)
题目描述输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。思路详见链接代码class Solution: def pathSum(self, root:TreeNode, sum:int)->List[List[int]]: res, path = [], [] def recur(root, tar): if not root: return path.append(root.v
2020-05-09 21:58:56
183
2
原创 剑指offer面试题30. 包含min函数的栈(辅助栈)
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。思路详见链接代码class MinStack: def __init__(self): self.A, self.B = [], [] def push(self, x:int)->None: self.A.app...
2020-05-08 10:26:17
305
1
原创 剑指offer面试题29. 顺时针打印矩阵(边界问题)
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。思路详见链接代码class Solution: def spiralOrder(self, matrix:[[int]])->[int]: if not matrix: return [] l, r, t, b, res = 0, len(matrix[0])-1, 0, len(matrix)...
2020-05-08 10:25:28
240
4
原创 Python数据结构实战——数(Tree)
文章目录1.实验目标2.定义树类3.构建树并打印4.显示结果1.实验目标构建一颗如下图所示的树:2.定义树类class TreeNode: def __init__(self, data): self.data = data #树的值 self.children = [] #树的孩子结点 self.parent = N...
2020-05-07 21:52:23
679
2
原创 剑指offer面试题28. 对称的二叉树(递归)
题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。思路详见链接代码class Solution: def isSymmetric(self, root:TreeNode)->bool: def recur(L, R): if not L and nor R: return True if not L o...
2020-05-07 21:51:30
192
1
原创 剑指offer面试题27. 二叉树的镜像(递归)
题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。思路详见链接代码class Solution: def mirrorTree(self, root:TreeNode)->TreeNode: if not root: return tmp = root.left root.left = self.mirrorTree(root.right) r...
2020-05-01 09:23:28
231
2
转载 Pytorch专题实战——前馈神经网络(Feed-Forward Neural Network)
文章目录1.导入必要模块2.超参数设置3.数据准备4.打印部分加载的数据5.模型建立6.训练1.导入必要模块import torchimport torch.nn as nnimport torchvisionimport torchvision.transforms as transformsimport matplotlib.pyplot as plt2.超参数设置devic...
2020-05-01 09:22:31
2885
原创 Pytorch专题实战——激活函数(Activation Functions)
文章目录1.激活函数的两种用法1.1.softmax激活函数1.2.sigmoid激活函数1.3.tanh激活函数1.4.relu激活函数1.5.leaky_relu激活函数2.用激活函数的不同方法构造函数2.1.nn.ReLU()法2.2.torch.relu()法3.可视化不同激活函数3.1.sigmoid3.2.tanh3.3.relu3.4.leaky_relu3.5.阶梯函数1.激活函...
2020-05-01 09:21:40
3038
1
原创 剑指offer面试题25. 合并两个排序的链表(双指针)
题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。思路详见链接代码class Solution: def mergeTwolists(self, l1:ListNode, l2:ListNode)->ListNode: cur = dum = ListNode(0) while l1 and l2: if l1.val < l...
2020-04-30 20:22:17
282
1
原创 Python数据结构实战——队列(Queue)
文章目录1.队列的性质(先进先出)2.使用deque作为队列3.使用双端队列实现Queue类1.队列的性质(先进先出)wmt_stock_price_queue = []wmt_stock_price_queue.insert(0, 131.10)wmt_stock_price_queue.insert(0, 132.12)wmt_stock_price_queue.insert(0, ...
2020-04-30 20:21:17
444
1
原创 Pytorch专题实战——交叉熵损失函数(CrossEntropyLoss )
文章目录1.用CrossEntropyLoss预测单个目标2.用CrossEntropyLoss预测多个目标3.二分类使用BCELoss损失函数4.多分类使用CrossEntropyLoss损失函数1.用CrossEntropyLoss预测单个目标loss = nn.CrossEntropyLoss() #实例化交叉熵损失函数Y = torch.tensor([0]) #预...
2020-04-30 20:18:31
2790
1
原创 Python数据结构实战—栈(Stack)
文章目录1.栈的性质(后进先出)2.使用deque作为栈3.使用双端队列实现Stack类1.栈的性质(后进先出)s = [] #定义一个空数组装元素s.append('https://www.cnn.com/') #尾部添加s.append('https://www.cnn.com/world')s.append('https://www.cnn.com/india'...
2020-04-29 11:50:45
884
3
原创 Pytorch专题实战——数据转换(Dataset Transforms)
文章目录1.导入必要模块2.定义数据处理类3.定义numpy转化为tensor类4.定义乘法转化类5.打印结果5.1.未转化前5.2.tensor转化5.3.乘法转化1.导入必要模块import torchfrom torch.utils.data import Datasetimport numpy as npimport torchvision2.定义数据处理类class Wi...
2020-04-29 11:49:45
3577
1
原创 剑指offer面试题24. 反转链表(双指针)
题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。思路详见链接代码class Solution: def reverseList(self, head:ListNode)->ListNode: if not head: return None pre = None cur = head while cur: cur.ne...
2020-04-29 11:48:37
236
2
原创 剑指offer面试题17. 打印从1到最大的n位数
题目描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。思路详见链接代码class Solution: def printNumbers(self,n:int)->List[int]: res = [] for i in range(1,10**n): res.append(i) ...
2020-04-28 11:03:34
193
2
原创 Python数据结构实战——哈希表中的冲突处理(Collision Handling In Hash Table)
文章目录1.定义哈希类(能处理冲突)2.测试2.1.增加键值2.2.查找对应键值2.3.查看哈希表2.4.更新值2.5.删除键值对1.定义哈希类(能处理冲突)class HashTable(): def __init__(self): self.MAX = 10 self.arr = [[] for i in range(self.MAX)] #[...
2020-04-28 11:02:49
1109
2
原创 Pytorch专题实战——批训练数据(DataLoader)
文章目录1.计算流程2.Pytorch构造批处理数据2.1.导入必要模块2.2.定义数据类2.3.定义DataLoader2.4.打印效果1.计算流程# Implement a custom Dataset:# inherit Dataset# implement __init__ , __getitem__ , and __len__2.Pytorch构造批处理数据2.1.导入必要...
2020-04-28 11:00:22
686
2
原创 剑指offer面试题15. 二进制中1的个数(位运算)
题目描述请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。思路详见链接代码class Solution: def hammingWeight(self,n:int)->int: res = 0 while n: res += n & 1 n ...
2020-04-27 10:12:58
225
2
原创 剑指offer面试题14- I. 剪绳子(数学推导)
题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。思路详见链接代码class Solution: def cutting...
2020-04-27 10:12:12
199
2
原创 Pytorch专题实战——逻辑回归(Logistic Regression)
文章目录1.计算流程2.Pytorch搭建线性逻辑模型2.1.导入必要模块2.2.数据准备2.3.构建模型2.4.训练+计算准确率1.计算流程 1)设计模型: Design model (input, output, forward pass with different layers) 2) 构建损失函数与优化器:Construct loss and optimizer 3) 循环...
2020-04-26 21:07:20
641
1
机器学习库spark-sklearn.pptx
2020-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人