leetcode
下坠丷
每天都在NULLPointerException
展开
-
二分打卡六: 1608. 特殊数组的特征值
特殊数组的特征值给你一个非负整数数组 nums 。如果存在一个数 x ,使得 nums 中恰好有 x 个元素 大于或者等于 x ,那么就称 nums 是一个 特殊数组 ,而 x 是该数组的 特征值 。注意: x 不必 是 nums 的中的元素。如果数组 nums 是一个 特殊数组 ,请返回它的特征值 x 。否则,返回 -1 。可以证明的是,如果 nums 是特殊数组,那么其特征值 x 是 唯一的 。示例 1:输入:nums = [3,5]输出:2解释:有 2 个元素(3 和 5)大于或等于.原创 2022-05-11 23:39:18 · 255 阅读 · 0 评论 -
二分打卡5 167. 两数之和 II - 输入有序数组 笨比二分+滑动窗口+哈希
笨比二分+滑动窗口+哈希 思路简单介绍,时间复杂度和空间复杂度对比原创 2022-05-10 21:51:07 · 74 阅读 · 0 评论 -
二分打卡4: 1539. 第 k 个缺失的正整数
第 k 个缺失的正整数给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。请你找到这个数组里第 k 个缺失的正整数。示例 1:输入:arr = [2,3,4,7,11], k = 5输出:9解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,…] 。第 5 个缺失的正整数为 9 。思路已知的一个规律是缺省的元素的值=k+已有的元素的个数。缺的元素个数有这么一个规律,arr[i]-i-1,即当前的值减去已有的元素个数,所以我们可以判断出缺省的元素数量。那么找到离k.原创 2022-05-10 00:21:07 · 183 阅读 · 0 评论 -
二分打卡3 : 153. 寻找旋转排序数组中的最小值
这个旋转之后的数组,除了整体递增和递减这两种情况外,从中间分开,一定有两种情况:一边肯定是递增的,另一边一定是一部分递增到最高值,然后断开,从最小值开始递增(后续称它为折线部分)。如果递增部分最左边的那个值不是最小值的话(处理整体递增),那么最小值一定在折线部分。对折线部分不断进行二分,不断舍弃左边递增部分,如果左边不是递增,那么就舍掉右边部分(这里处理了整体递减的特殊情况),最后左右重合的点,一定是左边递增部分的后一个点,即我们找的最低点。原创 2022-05-08 20:37:31 · 63 阅读 · 0 评论 -
二分查找打卡2 74. 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true思路这是一个矩阵,二分一般都是一维的数组,那么怎么二分呢?那就要想办法把矩阵转化成一维数组(其实是因为前天刚做了一道矩阵重置的题了解到可以把矩阵转一维,刷题果然还是有用的),具体的方法就是a[x]=原创 2022-05-07 17:25:10 · 79 阅读 · 0 评论 -
二分打卡1 1385. 两个数组间的距离值
最近感觉写的都没啥好记录的,感觉博客空了好久,还是记录一下吧,看他们说要坚持一段时间学一个方面的,才能学好。那就从感觉最简单的二分开始吧。给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。「距离值」 定义为符合此距离要求的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d 。输入:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2输出:2思路因为这原创 2022-05-06 21:16:51 · 361 阅读 · 0 评论 -
883. 三维形体投影面积 题意解释,代码很简单
三维形体投影面积在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。现在,我们查看这些立方体在 xy 、yz 和 zx 平面上的投影。投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。返回 所有三个投影的总面积 。示例 1:输入:[[1,2],[3,4]]输出:17解释:这里有该形体在三.原创 2022-04-26 21:06:53 · 183 阅读 · 0 评论 -
896. 单调数列 单个循环判断
两个标示符判断,不用分情况写两个循环判断增减原创 2022-04-26 10:19:11 · 232 阅读 · 0 评论 -
417. 太平洋大西洋水流问题
417.大西洋水流问题原创 2022-04-13 23:06:34 · 85 阅读 · 0 评论 -
56合并区间
56.合并区间以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].这个题完全没有思路,记录一下思路:将数组排序,刚知原创 2022-04-12 20:41:09 · 69 阅读 · 0 评论 -
递归回溯的几个小题目
77组合46全排列784字母大小写全排列原创 2022-04-10 22:40:30 · 327 阅读 · 0 评论 -
994.腐烂的橘子 bfs
腐烂的橘子在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。思路把初始的烂橘子当作第0天感染的,那么接下来一天它可以感染它附近四个方向的橘子,因此四个方向的橘子感染天数就是感染了它的橘子的天数+1。再对这些橘子进行同样的操作。应用队列实现。为了便于判断.原创 2022-04-09 20:06:32 · 203 阅读 · 0 评论 -
滑动窗口和unordered_set(哈希表)在字符串判断中的应用
3. 无重复字符的最长子串567. 字符串的排列原创 2022-04-05 22:32:17 · 1621 阅读 · 1 评论 -
19删除链表的倒数第N个结点 简单的双指针,不带哑结点及带哑结点优化
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]这个题的思路很简单了,双指针,前后保持n的距离,但是我的版本有些瑕疵,在于对于n恰好为链表的长度,不如官方简洁(他采用了一个哑节点处理,即在头结点前插入一个结点),所以记录一下吧。class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) {原创 2022-04-04 06:46:43 · 976 阅读 · 0 评论 -
二叉树题目小合集
94二叉树的中序遍历,101对称二叉树,100相同的树,98验证二叉搜索树,剑指offer 30二叉搜索树的后序遍历序列原创 2022-03-31 18:12:58 · 2153 阅读 · 1 评论 -
102. 二叉树的层序遍历 队列实现BFS
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。思路将每层的结点压入队列,记录下压入的数量,然后遍历这么多数量的结点(队列保证了先进先出),将这些结点的值存入二维数组中,i层放在result[i-1],vector自带的push_back可以很轻松的实现这种操作,同时将这些结点的子节点压入队列。当队列为空时结束操作class Solution {public: //作为存储结点的队列 queue<TreeNode*> ans;原创 2022-03-30 18:41:32 · 1413 阅读 · 0 评论