自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 买卖股票-leetcode

由易到难,leetcode题目为:121. 买卖股票的最佳时机https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/122. 买卖股票的最佳时机 IIhttps://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/309. 最佳买卖股票时机含冷冻期https://leetcode-cn.com/problems/best-time-to-buy-an

2021-08-10 20:25:29 113

原创 数据倾斜相关知识

一、怎么发现数据倾斜?数据倾斜的外在表现是执行时间超长。查看任务的监控页面可以发现,除了一个或几个任务外,其他reduce任务都执行的很快。出现这些错误:executor lost、OOM、shuffle出错二、数据倾斜是怎么产生的?数据倾斜常常发生在group by和join语句时,尤其时join。在Spark中,有一个流程叫做shuffle,用来聚合不同的key和对应的数据。一些典型的操作如distinct、reduceByKey、groupByKey、join、repartition等都会触

2021-07-16 16:45:14 307 5

原创 2021华为校园招聘算法题python

题目描述到香港旅游,到香港旅游,最后一站决定去迪士尼乐园打卡,因为返程机票已经订好,所以我们必须在剩余可游玩时间t分钟内完成游玩,才能不耽误行程,请你为我们设计一条最佳游玩线路,选择规则如下:1.游玩总时长不超过1,但最接近t2.游玩时不想走回头路,仅向右或向下两个方向,畅玩到出口乐园被划分为一个row*col的方格区域地图,在每个方格区域上,标注了游玩的最佳时长,从入园口[0,0]出发,选定最佳游玩线路,一路畅玩到出口[row-1.co-1]。输入描述:首行输入以单个空格分割的三个正整数ro

2021-07-15 21:53:21 528

原创 Spark-The-Definitive-Guide-master第二章

在仓库里放了原书用的数据,这个是基于原书代码,同时也将自己遇到的一些问题写上去了。GitHub链接

2021-03-24 14:57:42 67

原创 96. 不同的二叉搜索树

给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-binary-search-trees这道题一看就知道用动态规划,但是具体怎么用,想了半天想不出来,看了一下评论,恍然大悟。首先给出二叉搜索树的定义:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。

2021-03-22 12:19:57 72

原创 238. 除自身以外数组的乘积

给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不

2021-03-22 10:40:59 45

原创 236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,5,1,6,2,0,8,null,

2021-03-20 14:38:44 41

原创 48. 旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[1

2021-03-20 11:53:46 58

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

给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-paths这道题应该是DFS的入门题,很简单。基本思路就是用一个result来存储最终返回的结果,node(或者是以前表

2021-03-20 11:22:33 91

原创 105. 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal思路很简单,利用前序遍历来确定根节点,再根据中序遍历确定

2021-03-20 10:44:39 44

原创 114. 二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例 1:输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]示例 2:输入:root = []输出:[]示例 3:输入:root = [0]输出:[0]提示:树中结点

2021-03-20 10:00:43 33

原创 81. 搜索旋转排序数组 II

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: false进阶:这是 搜索旋转排序数组 的延伸题目,本题

2021-03-18 10:45:17 59

原创 33. 搜索旋转排序数组

整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数 ta

2021-03-18 10:32:20 69

原创 154. 寻找旋转排序数组中的最小值 II

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0说明:这道题是 寻找旋转排序数组中的最小值 的延伸题目。允许重复会影响算法的时间复杂度吗?会如何影响,为什么?来源:力扣(LeetCode)链接:https://leetcode-cn.com

2021-03-17 11:58:29 49

原创 153. 寻找旋转排序数组中的最小值

假设按照升序排序的数组在预先未知的某个点上进行了旋转。例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] 。请找出其中最小的元素。示例 1:输入:nums = [3,4,5,1,2]输出:1示例 2:输入:nums = [4,5,6,7,0,1,2]输出:0示例 3:输入:nums = [1]输出:1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-s

2021-03-17 11:43:33 45

原创 90. 子集 II

给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets-ii首先可以看看前面的子集I然后再看看组合总数到组合总数II的一个思路转变,这里简单说一下。最本质的问题就是进行树的裁剪,在子集I中,我们得到的是一个完全

2021-03-17 09:55:24 58

原创 78. 子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets很明显用DFS去搜索解,可以画出一个

2021-03-17 09:45:31 58

原创 22. 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]链接:https://leetcode-cn.com/problems/generate-parentheses很容易想到,有n个括号必定是在有n-1个括号的基础上生成的,就可以写出迭代关系‘(’ + i个括号的情况 + ‘)’ +

2021-03-15 18:01:20 47

原创 122. 买卖股票的最佳时机 II

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6

2021-03-15 10:40:51 82

原创 121. 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1

2021-03-15 09:45:42 63

原创 101. 对称二叉树

链接:https://leetcode-cn.com/problems/symmetric-tree递归,想法是,如果当前点的值一样,且当前点的左子节点.val = 右子节点.val就行。# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = le

2021-03-14 12:28:35 30

原创 543. 二叉树的直径

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/diameter-o

2021-03-14 12:01:08 79

原创 234. 回文链表

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?链接:https://leetcode-cn.com/problems/palindrome-linked-list想法是利用快慢指针找到中点,然后对比。# Definition for singly-linked list.# class ListNode:#

2021-03-14 11:35:41 28

原创 5. 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成链接:https://leetcode-cn.com/problems/longest-pali

2021-03-13 14:13:41 96

原创 617. 合并二叉树

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。注意: 合并必须从两个树的根节点开始。链接:https://leetcode-cn.com/problems/merge-two-binary-trees用DFS逐点遍历,直接的思路放在代码备注。# Definition for a binary tree n

2021-03-13 11:36:25 29

原创 160. 相交链表

编写一个程序,找到两个单链表相交的起始节点。这里相交的意味着节点相等,不只是他们的val相等。方法一:遍历一遍确定两个链表的长度,l1,l2让长的先出发,走abs(l1-l2)步,然后两个再一起往后走,当相等时,那么就说明找到了,如果最后没有找到相等,那么就不存在交差class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: temp1, temp2

2021-03-13 10:56:51 26

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

输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 target = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]链接:https://leetcode-cn.

2021-03-12 15:06:41 77

原创 15. 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]链接:https://leetcode-cn.com/problems/3sum这也是

2021-03-12 12:22:17 60

原创 40. 组合总和 II

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输入: candidate

2021-03-12 11:08:38 51

原创 39. 组合总和

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], target = 8,所求

2021-03-11 22:35:09 60

原创 47. 全排列 II

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]链接:https://leetcode-cn.com/problems/permutations-ii可以先去看看之前的文章:全排列I这个与之前的相似度很高,只是要

2021-03-11 20:12:05 70

原创 46. 全排列

给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]链接:https://leetcode-cn.com/problems/permutations很容易想到DFS方法来解题class Solution: def permute(self, nums: List[int]) -> List[List[int]]: #

2021-03-11 19:52:38 52

原创 剑指 Offer 42. 连续子数组的最大和

输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof方法一:class Solution: def maxSubArray(self, nu

2021-03-11 10:23:36 31

原创 剑指 Offer 03. 数组中重复的数字

找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof如果给出了数组长度,那么我们可以设定一个萝卜坑的策略来进行(排序很有效)

2021-03-11 09:23:44 40

原创 剑指 Offer 12. 矩阵中的路径 2021/03/08

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格

2021-03-08 13:37:11 44

原创 剑指 Offer 04. 二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 ta

2021-03-08 09:57:51 41

原创 601. 体育馆的人流量

编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。返回按 visit_date 升序排列的结果表。链接:https://leetcode-cn.com/problems/human-traffic-of-stadium用lead lag大法可以选出!但是要注意选出的有三个部分,头,尾,中!头是指后两个都>=100,中是指前一个和后一个都>=100,尾是指前两个>=100select id, visit_date, peoplefrom (

2021-03-07 10:53:29 131

原创 626. 换座位

小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?链接:https://leetcode-cn.com/problems/exchange-seats两张表结合,第一张表查出倒过来的id,第二张表把名字贴上去然后就行了。问题在于,怎么找倒过来的id,若id%2=0则id为偶数,需要往前倒一位,也就是id-1,如果id%2

2021-03-07 10:25:16 87

原创 剑指 Offer 49. 丑数

我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。连接:https://leetcode-cn.com/problems/chou-shu-lcof/动态规划解题class Solution: def nthUglyNumber(self, n: int) -> int: dp = [1] * n a, b, c = 0, 0, 0 # 指针,分别代表指针指向的前面的数是否乘了2,3,5

2021-03-06 10:35:49 40

原创 [编程题]查找入职员工时间排名倒数第三的员工所有信息

链接:https://www.nowcoder.com/questionTerminal/ec1ca44c62c14ceb990c3c40def1ec6c注意应该有重复情况,所以简单的写select *from employeesorder by hire_date desclimit 2,1是不可以的,只能找到一个人最好的方法:select emp_no, birth_date, first_name, last_name, gender, hire_datefrom employee

2021-02-25 09:43:04 121

空空如也

空空如也

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

TA关注的人

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