自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 面试题 08.05. 递归乘法

递归实现乘法。class Solution: def multiply(self, A: int, B: int) -> int: #for i in range(B): sum = 0 if B>1: sum = self.multiply(A, B-1) + A else: ...

2020-03-31 15:23:09 176

原创 面试题 08.01. 三步问题

青蛙一次可以走1,2,3个阶梯,那如果有n个阶梯有多少种走法?思路:f(n)=f(n-1)+f(n-2)+f(n-3)class Solution: def waysToStep(self, n: int) -> int: if n < 3: return n first, second, third = 1, 2,...

2020-03-30 20:33:29 120

原创 面试题10- II. 青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。思路:青蛙第一次跳的时候有两种跳法:跳一阶,跳两阶。如果跳一阶:剩下的跳法等于后面n-1阶的跳法数。如果跳两阶:剩下的跳法等于后面n-2阶的跳法数。即:f(n) = f(n-1) + f(...

2020-03-30 19:11:21 174

原创 1290. 二进制链表转整数

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。1->0->1输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)代码:class Solution: def getDecimalValue(self, head: L...

2020-03-29 19:29:49 106

原创 100. 相同的树

示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ 2 2 ...

2020-03-29 18:43:51 80

原创 103. 二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]思路:这种按层次遍历的做法,需要在广...

2020-03-29 11:37:31 114

原创 1019. 链表中的下一个更大节点

示例 1:输入:[2,1,5]输出:[5,5,0]示例 2:输入:[2,7,4,3,5]输出:[7,0,5,5,0]示例 3:输入:[1,7,5,1,9,2,5,1]输出:[7,9,9,9,0,5,0,0]方法一:转成数组操作class ListNode: def __init__(self, x): self.val = x self....

2020-03-28 22:56:39 101

原创 654. 最大二叉树

给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。示例 :输入:[3,2,1,6,0,5]输出:返回下面这棵树的根节点: 6 / \ 3 ...

2020-03-28 20:58:46 114

原创 147. 对链表进行插入排序

代码:# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def insertionSortList(self, head: ListNode) ->...

2020-03-27 12:33:56 89

原创 打家劫舍

本题即在给定的数组arr中,求出arr中不相邻节点之和最大值。与之前写的动态规划那题一样。我试着用递归和非递归的方法去写。递归的方法,时间复杂度超了,非递归的通过。代码:class Solution: def rob(self, nums: List[int]) -> int: #动态规划,本题求出arr中不相邻节点之和最大值 #解题思路: ...

2020-03-26 22:38:08 128

原创 冒泡排序

def BubbleSort(list): len_l = len(list) for i in range(len_l): exchange = False for j in range(len_l-1, i, -1): if list[j] < list[j-1]: list[j], ...

2020-03-26 09:42:54 104

原创 快速排序

def partition(list, s, t): temp = list[s] while s < t: while s<t and temp<=list[t]:#找到右边第一个小于temp的数,停止 t -= 1 list[s] = list[t] while s<t and te...

2020-03-26 09:04:43 127

原创 445. 两数相加 II

给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出: 7 -...

2020-03-25 21:48:48 135

原创 543. 二叉树的直径

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。算法迭代过程...

2020-03-25 21:16:57 166

原创 257. 二叉树的所有路径

给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3算法一:BFSclass TreeNode: def __init__(s...

2020-03-25 11:57:16 175

原创 160. 相交链表

编写一个程序,找到两个单链表相交的起始节点。class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution(object): def getIntersectionNode(self, headA, headB): ha, h...

2020-03-24 16:20:58 116

原创 994. 腐烂的橘子

在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。class Solution: def orangesRotting(self, grid: List[Lis...

2020-03-24 11:34:09 91

原创 112. 路径总和

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...

2020-03-23 10:44:48 76

原创 199. 二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def rightSideView(s...

2020-03-22 23:48:37 86

原创 迪杰斯特拉算法

import heapqgraph = { "A": {"B": 5, "C": 1}, "B": {"A": 5, "C": 2, "D": 1}, "C": {"A": 1, "B": 2, "D": 4, "E": 8}, "D": {"B": 1, "C": 4, "E": 3, "F": 6}, "E": {"C": 8, "D": 3}, ...

2020-03-22 13:21:24 129

原创 面试题24. 反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL# Definition for singly-linked list.class ListNode: def __init__(self, x): ...

2020-03-20 12:57:50 109

原创 200岛屿数量&695岛屿的最大面积

给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1from typing import Listclass Solution: # x-1,y #...

2020-03-19 23:05:04 183

原创 动态规划

题一:给定数组arr,求出arr中不相邻节点之和最大值输入:arr = [1,2,4,1,7,8,3]输出:15解题思路:opt(0)=arr[0]opt(0) = arr[0]opt(0)=arr[0]opt(1)=max{arr[0]arr[1]opt(1)=max\begin{cases}arr[0]\\arr[1]\end{cases}opt(1)=max{arr[0]...

2020-03-19 16:41:48 122

原创 130. 被围绕的区域

给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘...

2020-03-18 22:27:05 118

原创 111. 二叉树的最小深度

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.思路:本题求的是根节点到叶子节点的最小深度。1.当当前节点左右子树有一个为空,应该返回...

2020-03-18 21:17:33 124

原创 面试题54. 二叉搜索树的第k大节点

给定一棵二叉搜索树,请找出其中第k大的节点。示例 :输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4思路:二叉搜索树本身是有序的,最右边节点值最大。所以采用中序(这里是右中左)遍历的方法,从右往左,从大到小数数。# Definiti...

2020-03-18 13:06:00 126

原创 面试题36. 二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。思路:中序遍历,其它技巧未掌握,后面多看几遍,看看有什么收获。本题带入三个节点的二叉树: 5 / \ 4 8结果如下: 5 // \\(s...

2020-03-17 18:42:20 99

原创 98. 验证二叉搜索树

给定一个二叉树,判断其是否是一个有效的***二叉搜索树***。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 5 / \ 4 7 / \ 3 8输出: false思路:刚开始看半天没看懂,然后pycharm debug走了一下...

2020-03-17 00:04:22 122

原创 面试题34. 二叉树中和为某一值的路径

输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。思路:dfs(root)里面套dfs(root.left),dfs(root.right)就是dfs,递归出口是空节点。ans和path分别用来存储满足条件的path和path的过程。最好用PyCharm debug走一下过程即可。给定如下二叉树,以及目标和 s...

2020-03-16 00:04:21 118

原创 面试题32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]思路:该题用到BFS思想,其实跟BFS还是有些差别;因为BFS需要考虑邻接节点有没有被遍历。# Definition for a bi...

2020-03-14 23:53:02 105

原创 面试题27. 二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1思路:DFS思想,遍历的目的是对当前左右子树进行交换,递归出口为空结点# Definition for a binary ...

2020-03-14 12:23:04 164

原创 110. 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7返回 true# Definition for a binary tree node.# class TreeNode:# ...

2020-03-13 21:01:27 108

原创 图的遍历

昨天做了复制复杂链表的那题,其中用到了图的遍历算法,然后今天复习一下BFS和DFS。BFS:广度优先遍历:算法步骤:1.输入图graph节点s2.把节点s存入队列中,然后设置已访问标记3.从队列(先进先出)中取出头节点,然后从图中取出该节点的邻接节点4.判断这些邻接节点是否已经别访问,如果没有被访问,把邻接节点存入队列中,然后设置已访问标记5.输出节点s6.重复1-5graph ...

2020-03-13 12:13:13 124

原创 面试题35. 复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]算法:深度优先搜索从头结点 ...

2020-03-12 15:11:23 142

原创 82. 删除排序链表中的重复元素 II

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5思路:1.参数作用:p代表right的上一个结点,初始化为0right作用:判断重复left作用:标记right是否移动2.while作用第一个while:while...

2020-03-10 23:16:39 105

原创 148. 排序链表

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4基于递归的归并排序方法思路:1.为什么要用递归?2.递归的出口是什么?答:1.递归的目的是要把链表不停的分裂。2.分裂成左右只剩小于等于1个结点,并返回该结点(递归出口)。接着对这左右两个结点进行排序,排序过后...

2020-03-10 20:06:27 94

原创 3. 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 :输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。1.动态规划思路:过去的最优值已经得到,用当前的最优值比较过去的最优值。class Solution: def lengthOfLongestSubstring(self, s: str) -> ...

2020-03-09 01:04:47 150

原创 142. 环形链表 II

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:...

2020-03-07 23:38:33 85

原创 215. 数组中的第K个最大元素

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。class Solution(o...

2020-03-07 22:01:41 94

原创 回归树算法思想

1.算出每个属性的residuals1.1针对单个属性的算出threshold2.使用redidual最小的属性做根节点3.限制每个叶子节点中样本的数量来减少过拟合

2020-03-06 18:20:48 278

决策树代码film.zip

决策树代码。里面有代码,数据,还有代码执行过程中输出的PDF。根据电影数据样本的类别属性去预测是否去看电影。

2020-02-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除