自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱喝舒化奶的博客

小白想升级

  • 博客(177)
  • 收藏
  • 关注

原创 leetcode 152.Maximum Product Subarray( 乘积最大子序列)

题目要求给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。解题思路和求连续最大子数组的和一样leetcode 53 Maximum Subarray (求最大子数组的和),用Kadanes的思想,(算是一种动态规划算法) 它需要两个变量,一个用来存储局部最优值,一个用来比较全局最优值。唯一不同的是,在乘法运算中,可能会有负数和正数相乘的情况,原本这个...

2019-08-05 19:50:37 318

原创 leetcode 72. Edit Distance 编辑距离

题目要求给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')rorse -> rose...

2019-07-29 17:15:08 369

原创 leetcode128 Longest Consecutive Sequence(最长连续序列)

题目要求给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。解题思路首先拿到题目可以想到暴力法,依次去遍历判断可以得到答案,但是实际复杂度太高,不适用。 还有一种是先排序,然后根据排序后的结果一次遍历就可以得到结果。同暴力法一样,不是最优的解法,所以也不建议使用。综上,我们使用一种方法,借用python中的set结构,首先用这结构的好处是让我们去除了冗余...

2019-07-29 15:44:16 325

原创 leetcode188. Best Time to Buy and Sell Stock IV(买卖股票的最佳时机 IV)

题目要求给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-...

2019-07-29 15:11:59 273

原创 leetcode123. Best Time to Buy and Sell Stock III( 买卖股票的最佳时机 III)

题目要求给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。主要代码pythonclass Solution(object): def maxProfit(self, prices): """ ...

2019-07-29 11:04:06 299

原创 反转整数

class Solution(object):def reverse(self, x):“”":type x: int:rtype: int“”"res = 0sign = 1 if x >0 else -1x = x if x >0 else -xwhile x!=0:res = res10 + x%10x /= 10if res>2**31 -1:r...

2019-07-29 10:48:44 107

原创 leetcode 9. palindrome-number (回文数)

题目要求判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解题思路转换成字符串,之后反转判断会非常简单,这里就不过多的介绍了。本文只介绍一下如何利用反转整数的思想进行回文数的判断,从题目示例中我们可以判断:因为符号的原因,负数一定不是回文。另外,对于反转的数字不需要判断数是否越界溢出,只要判断两个数是不是回文即可,这点和反转整数有很大的不同。所以,我...

2019-07-28 11:32:37 118

原创 leetcode 15 3Sum (三数之和)

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。链接:https://leetcode-cn.com/problems/3sumclass Solution(object): def threeSum(self, nums): ...

2019-07-28 00:02:03 144

原创 leetcode3 longest-substring-without-repeating-characters(最长无重复子串)

题目要求给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解题思路滑动窗口暴力解法时间复杂度较高,会达到 O(n^2)O(n 2 ),故而采取滑动窗口的方法降低时间复杂度定义一个 map 数据结构存储 (k, v),其中 key 值为字符,value 值为字符位置 +1,加 1 表示从字符位置后一个才开始不重复我们定义不重复子串的开始位置为 start,结束位置为 end随...

2019-07-27 23:48:47 131

原创 leetcode 2 two-sum (两数相加)

题目要求给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。解题分析由于他是倒叙存储的,所以实际上省去了很多的麻烦,我们可以通过一个关系式来进行计算:s=x+y+carry s =...

2019-07-27 23:31:13 227

原创 leetcode 95. Unique Binary Search Tree ii

主要代码python# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(obj...

2019-07-24 23:59:17 123

原创 leetcode 96. Unique Binary Search Trees(不同的二叉搜索树)

题目要求给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?输出个数即可解题思路本问题可以用动态规划求解。给定一个有序序列 1 … n,为了根据序列构建一棵二叉搜索树。我们可以遍历每个数字 i,将该数字作为树根,1 … (i-1) 序列将成为左子树,(i+1) … n 序列将成为右子树。于是,我们可以递归地从子序列构建子树。 在上述方法中,由于根各自不同,每棵二叉树都保证...

2019-07-24 23:35:37 130

原创 leetcode 101. Symmetric Tree(对称二叉树)

题目要求给定一个二叉树,检查它是否是自身的镜像(即围绕其中心对称)。例如,这个二叉树[1,2,2,3,4,4,3]是对称的:但是下面的[1,2,2,null,3,null,3]不是:主要代码python# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):...

2019-07-24 23:25:29 152

原创 leetcode 88 Merge Sorted Array(合并两个排序数组)

循环一直到结束。循环结束条件:当index1或index2有一个小于0时,此时就可以结束循环了。如果index2小于0, 说明目的达到了。如果index1小于0,就把array2中剩下的前面的元素都复制到array1中去就行。从前往后的空间要O(m), 从后往前是O(1)class Solution(object): def merge(self, nums1, m, nums2,...

2019-07-24 23:09:29 143

原创 leetcode122. Best Time to Buy and Sell Stock II (买卖股票的最佳时机 II)

考虑买股票的策略:设今天价格p1,明天价格p2,若p1 < p2则今天买入明天卖出,赚取p2 - p1;若遇到连续上涨的交易日,第一天买最后一天卖收益最大,等价于每天买卖(因为没有交易手续费);遇到价格下降的交易日,不买卖,因此永远不会亏钱。赚到了所有交易日的钱,所有亏钱的交易日都未交易,理所当然会利益最大化。class Solution(object): def maxPr...

2019-07-24 22:00:11 160

原创 leetcode 80. Remove Duplicates from Sorted Array II (删除排序数组中的重复项)

题目要求给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。解题思路O(1)就地操作一定是双指针,一个进行遍历,一个进行插入操作。主要代码 pythonclass Solution(object): def removeDuplicates...

2019-07-24 21:45:16 134

原创 leetcode75. Sort Colors(颜色排序)

题目要求给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。解题思路本道题,我们使用三路快排三路快排,三个指针(分别记录:当前元素i,0的位置start,2的位置end)协同完成排序任务,我们这里...

2019-07-24 20:51:25 227

原创 leetcode 98. Validate Binary Search Tree(验证二叉搜索树)

题目要求给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。解题思路(1)递归凭直觉看这是一个平凡的问题。只需要遍历整棵树,检查 node.right.val > node.val 和 node.left.val < node...

2019-07-23 11:29:44 122

原创 leetcode 110. Balanced Binary Tree

题目要求给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。解题思路从底至顶(提前阻断法)对二叉树做深度优先遍历DFS,递归过程中:终止条件:当DFS越过叶子节点时,返回高度0;返回值:从底至顶,返回以每个节点root为根节点的子树最大高度(左右子树中最大的高度值加1max(left,right...

2019-07-22 11:27:08 108

原创 leetcode 112. Path Sum

题目要求给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。主要代码python# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val...

2019-07-22 00:04:24 121

原创 leetcode113. path sum ii (路径总和 II)

题目要求给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。返回符合要求的路径说明: 叶子节点是指没有子节点的节点。主要代码python# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val =...

2019-07-22 00:04:14 188

原创 leetcode 129. Sum Root to Leaf Numbers (求根到叶子节点数字之和)

题目要求给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。主要代码python# Definition for a binary tree node.# class TreeNode(obj...

2019-07-21 22:49:47 139

原创 leetcode 100. Same Tree (是否为相同的树)

题目要求给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。注意判断空的情况主要代码python# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x...

2019-07-21 22:21:48 82

原创 leetcode148. Sort List (排序链表)

主要代码c++# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def sortList(self, hea...

2019-07-20 23:52:24 116

原创 leetcode 23 Merge k Sorted Lists(合并k个排序链表)

题目要求合并k个已排序的链表并将其作为一个排序列表返回。 分析并描述其复杂性。主要代码python排序法O(nlogn)# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next =...

2019-07-20 23:26:13 116

原创 142. Linked List Cycle II (找到带环链表的入口节点)

题目要求给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。解题思路实际上在有了判断链表是否有环的基础上,我们把本问题分解成两个步骤:(1)判断是否有环 :快慢指针 参考解答leetco...

2019-07-20 23:15:15 108

原创 leetcode92. Reverse Linked List II (任意位置翻转链表)

题目要求将位置m的链接列表反转到n。 用一次通过遍历。注意:1≤m≤n≤列表长度。解题思路有了反转链表的基础 解答leetcode 206. Reverse Linked List (翻转一个链表)【剑指offer】 面试题24 翻转链表我们很容易对一个链表进行翻转的操作,那么如何对链表的某个片段进行翻转而不是整条链表呢? 其实思路很容易想到,我们可以可以把一个链表分成三部分,需要翻转...

2019-07-20 23:05:49 161

原创 leetcode 143. Reorder List (链表重构顺序)

题目要求给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。解题思路这道题很有价值,涉及到了链表的多项操作,真正的是一道顶三道,建议多练习几遍。猛的一看这道题真的是没什么思路啊!如何在链表进行每个孔插入一个节点?这是个问题,但是当你有了这个思想的时候,你就...

2019-07-20 10:04:38 199

原创 leetcode sqrt(x) 不用库函数求平方根

题目要求实现sqrt (int x)操作,计算并返回根号x。主要思路1、最先想到遍历操作,O(n)的时间,符合就返回。2、更好一点的办法是二分查找,能让时间减少到O(logn),这里有个点需要注意右端从x/2开始,另外在判断时不能用r*r > x 因为r*r非常容易溢出。 我们通常用除法来代替乘法操作。3、牛顿法,迭代逼近,会让人眼前一亮。主要代码,二分法class Solu...

2019-07-19 15:06:04 385

原创 leetcode 145. Binary Tree Postorder Traversal(二叉树的后序遍历,递归法,非递归法))

题目要求给定一个二叉树,返回后序遍历的结果。注:尝试用递归和迭代两种方法。类似题目:解答:leetcode 94. Binary Tree Inorder Traversal (二叉树的中序遍历,递归法,非递归法)解答: leetcode 144. Binary Tree Preorder Traversal(二叉树的前序遍历,递归法,非递归法)示例/* Example */Inp...

2019-06-20 11:12:35 157

原创 leetcode 349. Intersection of Two Arrays(求数组的交集)

题目要求给定两个数组,求他们的交集。解题思路求交集,所以元素只能出现一次。元素去重的话,我们想到了用set。整体流程:将其中一个数组变成set形式,然后用另一个数组去搜索这个set,如果在set中找到第二个数组的元素,那么我们就记录下来,然后再set中删除,防止再次出现,造成重复添加。主要代码c++class Solution {public: vector<int&g...

2019-06-17 20:43:37 132

原创 leetcode 350. Intersection of Two Arrays II (两个数组中的重复元素)

题目要求给定两个数组,找出重复元素,注意和题目349的区别。题目解析题目349更像是求两个数组的交集(无重复元素),而本道题目是直接取两个数组的重复元素(记次数的),如example1中的2重复了两次。 为什么example2的输出是[4,9]而不是[9,4,9,4]呢?因为两个数组中同时只重复了一次[4,9]。若nums1是[4,9,5,4]那么输出就是[4,9,4]了。根据这个特性,我...

2019-06-17 20:34:31 180

原创 leetcode 62. Unique Paths(不同的路径)

题目要求机器人位于m x n网格的左上角(在下图中标记为“开始”)。机器人只能在任何时间点向下或向右移动。 机器人正试图到达网格的右下角(在下图中标记为“完成”)。有多少可能的不同的路径?解题思路经常出现在面试题中的一道题,主要思想就是动态规划。每次只能向下或者向右走,所以到左下角之前的一步,可以是图中标红的地方,然后一次向上迭代就会发现状态方程:path[i][j]=path[i−...

2019-06-14 20:27:35 131

转载 降维方法之PCA,LDA

降维的目的减少冗余信息造成的误差,提高数据信息的精度。PCA 主成分分析Principal Component Analysis(PCA)主成分分析,是最常用的线性降维方法,无监督的,它通过某种线性映射,将高维的向量转化为低维空间表示,并且希望在所投影的低维空间上数据方差尽可能的大(实际表现为数据点尽可能的分散,而不是聚作一团)通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如...

2019-06-09 15:25:14 922

原创 leetcode 1046. Last Stone Weight (最后剩余石子的重量)

题目要求有一些石子,每个石子都有一个重量,每次我们选择两个最重的石子x,y。如果这两个石子重量相同,那么同时被销毁,否则重量小的被销毁,较重的石子重量变为(|x-y|)解题思路有一点贪心的策略,每次找最大的两个数,然后比较即可。在这里,我们可以用堆(heap)来实现,通过借用 priority_queue来实现堆。有了这个思想代码能很快的写出来。这里还可以 使用multiset来实现,m...

2019-06-06 21:06:27 713

原创 机器学习面试简答题(持续更新)

1.请详细说说支持向量机(support vector machine,SVM)的原理SVM就是在原始数据的样本空间中找到一个最大间隔的划分超平面,将样本进行分类。超平面的确定只与支持向量有关,通过最大化支持向量到超平面的距离,来确定超平面的位置。求解最大化距离时,可以使用拉格朗日乘数法将问题转化为其对偶问题。...

2019-06-06 17:33:45 2139

原创 聚类算法总结

聚类算法大多数通过相似度来判断 什么是相似度?距离啊! 就是距离计算K-means 需要设置聚类的簇数k,但是时间是线性的,对噪声敏感DBSCAN 基于密度的聚类,不需要设置K,不怕噪声影响,时间复杂度高,平方, 不适合大型数据H-cluster 层次聚类 分为两种凝聚(自下而上),分裂(自上而下)就是按照某种方法进行层次分类,直到满足某种条件为止。Mean-shift 均值迁移 不断的寻...

2019-06-04 16:27:41 202

原创 c++ 字符串大小写转换

设S是一个大写字母,转换成小写字母的代码如下:S = S - 'A' + 'a';设s是一个小写字母,转换成大写字母的代码如下:s = s - 'a' + 'A';

2019-05-26 21:26:56 2563

原创 leetcode 938. Range Sum of BST (BST某个范围内的和)

题目要求给定一颗二叉搜索树,返回摸个范围内节点的和,包括L,R。其中BST中的值都是唯一的。解题思路对BST进行前序遍历,结果就是从小到大的顺序,所以,我们只要在遍历的时候,同时记录[L,R]范围内的数值和即可。主要代码c++class Solution {public: int sum = 0; int rangeSumBST(TreeNode* root, int...

2019-05-25 21:10:39 159

原创 leetcode 338. Counting Bits (记数位)

题目要求给定非负整数num。 对于0≤i≤num范围内的每个数字i,计算其二进制表示中的1的数量并将它们作为数组返回。如下图解题思路规律不太好找,我们先写出几个表达式Index : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15num : 0 1 1 2 1 2 2 3 1 2 2 3 2 3 3 4根据Num关系,我们可以得到如下的几个关系式:实...

2019-05-22 20:04:41 89

空空如也

空空如也

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

TA关注的人

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