自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

题目描述:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array解题思路:一开始想用sort,面试中肯定不能投机取巧,所以考虑先手动排序,再输出,这样做会超时,只要把数组全排列 就会超时。于是转为分治,选原数组的第一个数为基

2021-04-27 20:46:22 101

原创 leetcode 948. 令牌放置

题目描述:你的初始 能量 为 P,初始 分数 为 0,只有一包令牌 tokens 。其中 tokens[i] 是第 i 个令牌的值(下标从 0 开始)。令牌可能的两种使用方法如下:如果你至少有 token[i] 点 能量 ,可以将令牌 i 置为正面朝上,失去 token[i] 点 能量 ,并得到 1 分 。如果我们至少有 1 分 ,可以将令牌 i 置为反面朝上,获得 token[i] 点 能量 ,并失去 1 分 。每个令牌 最多 只能使用一次,使用 顺序不限 ,不需 使用所有令牌。在使用任意数量

2021-04-26 10:02:34 211

原创 leetcode 969. 煎饼排序

题目描述:给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序。一次煎饼翻转的执行过程如下:选择一个整数 k ,1 <= k <= arr.length反转子数组 arr[0…k-1](下标从 0 开始)例如,arr = [3,2,1,4] ,选择 k = 3 进行一次煎饼翻转,反转子数组 [3,2,1] ,得到 arr = [1,2,3,4] 。以数组形式返回能使 arr 有序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * arr.length

2021-04-25 20:36:50 145

原创 leetcode 452. 用最少数量的箭引爆气球

题目描述:在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆

2021-04-22 21:48:17 68

原创 leetcode 324. 摆动排序 II

题目描述:给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。你可以假设所有输入数组都可以得到满足题目要求的结果。链接:https://leetcode-cn.com/problems/wiggle-sort-ii解题思路:我一开始想的是先对数组排序,然后按下标分为大 小两部分,然后从这两个数组左边开始,小的压进结果数组一个,再压入一个大的,可是这种情况不能避免中间重复元素,比如[4,5,5,6],按这

2021-04-22 21:12:34 110

原创 leetcode 1387.将整数按权重排序

题目描述:我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数:如果 x 是偶数,那么 x = x / 2如果 x 是奇数,那么 x = 3 * x + 1比方说,x=3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。给你三个整数 lo, hi 和 k 。你的任务是将区间 [lo, hi] 之间的整数按照它们的权重 升序排序 ,如果大于等

2021-04-22 10:14:53 108

原创 leetcode 263.丑数

题目描述:给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 6输出:true解释:6 = 2 × 3链接: https://leetcode-cn.com/problems/ugly-number/.解题思路:我觉得这个很像斐波那契数列,我用了递归思想,要判断n是不是丑叔,就要判断n/2、n/3、n/5是不是丑数(不能整除的就不判断了,比如n/2不能整除,就只判

2021-04-21 21:27:05 71

原创 2021-04-21

题目描述:给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论文每篇被引用次数 不超过 h 次。例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。链接: https://leetcode-cn.com/

2021-04-21 09:57:53 89

原创 leetcode 220. 存在重复元素 III

题目描述:给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。解题思路:这题没什么难度,遍历一遍数组,对第i个元素,求它与i+1 i+2…i+k的差值,但凡有一个小于t就返回true。这题的关键在于溢出…加个if判断就好了,面向测试用例编程c++代码:class Solution

2021-04-20 22:12:04 87

原创 leetcode 1305. 两棵二叉搜索树中的所有元素

题目描述:给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.链接: https://leetcode-cn.com/problems/all-elements-in-two-binary-search-trees/.解题思路:深度优先搜索,没什么好说的,把元素存储在result里,先搜索root1,再搜索root2.c++代码:/** * Definition for a binary tree node. * stru

2021-04-20 21:42:46 50

原创 leetcode 179.最大数

题目描述:给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:“210”解题思路:我一开始想的是将nums数组里的元素都转为字符串,然后存储到字符串容器里,利用sort函数对字符串进行排序,可是这样的话 “30”>“3”,会导致输出“303”而不是“330”,所以这种方法行不通。问题的本质就是对字符串进行排序嘛,只要定义好排序规则就行了,所

2021-04-20 10:00:41 84

原创 leetcode 1630.等差子数组

学习目标:如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 i , s[i+1] - s[i] == s[1] - s[0] 都成立。例如,下面这些都是 等差数列 :1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9下面的数列 不是等差数列 :1, 1, 2, 5, 7给你一个由 n 个整数组成的数组 nums,和两个由 m 个整数组成的数组 l 和 r,后两个数组

2021-04-19 20:59:33 154

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

题目描述:对链表进行插入排序。链接: https://leetcode-cn.com/problems/insertion-sort-list/.解题思路:设置一个空指针p,p->next=head,然后head=head->next;然后遍历p链,找到head->val应该在的位置,插进去就行了。c++代码:/** * Definition for singly-linked list. * struct ListNode { * int val; *

2021-04-18 22:02:16 49

原创 leetcode 57. 插入区间

题目描述:给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]链接: https://leetcode-cn.com/problems/insert-interval/.解题思路:将Newinterval压入intervals,该题就变成了上一题合并重复子

2021-04-18 20:50:09 36

原创 leetcode 56. 合并区间

题目描述:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].链接: https://leetcode-cn.com/proble

2021-04-18 18:54:51 68

原创 leetcode 1329.将矩阵按对角线排序

题目描述:矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。例如,矩阵 mat 有 6 行 3 列,从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]、mat[3][1] 和 mat[4][2] 。给你一个 m * n 的整数矩阵 mat ,请你将同一条 矩阵对角线 上的元素按升序排序后,返回排好序的矩阵。链接: https://leetcode-cn.com/problems/sort-the-matrix-diagonall

2021-04-18 16:16:44 265

原创 leetcode 1561.你可以获得的最大硬币数目

学习目标:有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币:每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那一堆。Bob 将会取走最后一堆。重复这个过程,直到没有更多硬币。给你一个整数数组 piles ,其中 piles[i] 是第 i 堆中硬币的数目。返回你可以获得的最大硬币数目。解题思路:先将硬币数量排序,Alice一定会拿走最多的那一堆,那么就不要再让她拿第二多的堆了,然后让bob拿最少的那一

2021-04-18 15:27:24 143

原创 leetcode 1637.两点之间不包含任何点的最宽垂直面积

题目描述:给你 n 个二维平面上的点 points ,其中 points[i] = [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直面积 的宽度。垂直面积 的定义是固定宽度,而 y 轴上无限延伸的一块区域(也就是高度为无穷大)。 最宽垂直面积 为宽度最大的一个垂直面积。请注意,垂直区域 边上 的点 不在 区域内。解题思路:纵坐标没啥用,用sort把points排序,然后维护一个最宽的边长maxdis,遍历整个points,即可得到结果。c++代码:class Solution

2021-04-18 15:14:11 95

原创 leetcode 1640. 能否连接形成数组

题目描述:给你一个整数数组 arr ,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是,不允许 对每个数组 pieces[i] 中的整数重新排序。如果可以连接 pieces 中的数组形成 arr ,返回 true ;否则,返回 false 。解题思路:这道简单题花费了我很长时间,自己太菜了。只能想到暴力解题,即从arr数组的第一个数字开始,去pieces数组里寻找和他匹配的数组,

2021-04-18 10:33:19 105

原创 Leetcode 938.二叉搜索树的范围和

题目描述:给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。https://leetcode-cn.com/problems/range-sum-of-bst/解题思路:二叉搜索树是按照中序遍历,root = [10,5,15,3,7,null,18], low = 7, high = 15,中序遍历结果是3,5,7,10,15,18,从7到15,即为7+10+15=32,所以关键是得到中序遍历的结果,我通过深搜,将遍历结果放在result里,再对re

2021-04-17 09:40:40 45

原创 剑指 Offer 41. 数据流中的中位数

题目表述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数https://le

2021-04-16 18:39:09 59

原创 剑指 Offer 59 - II. 队列的最大值

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2021-04-15 17:34:48 37

原创 剑指offer 30.包含min函数的栈

这里写自定义目录标题目录题目描述思路分析C++代码目录题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/思路分析设置两个栈s1和s2,s1正常压入弹出,s2负责存储每次要push进新元素时,该元素对应的栈里的最小值,比如向空栈s1里压入-2,最小值就是它本身,所以

2021-04-13 08:43:32 34

原创 剑指offer-09 用两个栈实现队列

题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/思路栈是先进后出,队列是先进先出,即用两个栈实现先进先出,包括压入和弹出操作。push ,直接将value压进栈里,会导致

2021-04-12 20:52:51 41

空空如也

空空如也

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

TA关注的人

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