LeetCode
文章平均质量分 60
C.er
这个作者很懒,什么都没留下…
展开
-
在排序数组中查找数字 I(对二分法的理解)
left左边的值都小于(或小于等于)target,right右边的值都大于(或大于等于)target原创 2023-01-13 16:36:16 · 123 阅读 · 0 评论 -
复杂链表的复制(递归、链表的拼接拆分法)
负载链表的复制,链表的拼接拆解法原创 2023-01-13 01:09:17 · 63 阅读 · 0 评论 -
2351.第一个出现两次的字母(哈希和位运算)
哈希和位运算原创 2023-01-02 01:22:39 · 46 阅读 · 0 评论 -
236.二叉树的最近公共祖先(骚操作翻车记录)
二叉树的最近公共祖先当时刚看完王道数据结构(23版)原创 2022-04-25 22:35:47 · 141 阅读 · 0 评论 -
958.二叉树的完全性检验
二叉树的完全性检验在做王道的时候发现广度优先搜索原创 2022-04-24 19:39:55 · 1368 阅读 · 0 评论 -
104. 利用后序遍历(非递归)求二叉树的最大深度
利用后序遍历的非递归算法后序遍历在出入栈是,是先将左孩子进栈,处理完毕后出栈,再将右孩子入栈,最后再处理根结点。所以在非递归的后序遍历过程中,栈的深度即为当前的深度。利用这个特性,我们可以编写出一下...原创 2022-04-23 20:43:04 · 1717 阅读 · 0 评论 -
318. 最大单词长度乘积(C++)和map遍历方法auto [mask1,_]
318. 最大单词长度乘积给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。示例 1:输入: [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]输出: 16解释: 这两个单词为 “abcw”, “xtfn”。示例 2:输入: [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“a原创 2021-11-21 14:10:42 · 211 阅读 · 0 评论 -
27. 移除元素(双指针做法以及对边界值的思考)
27. 移除元素一开始的解法,使用sort求解,没啥特点class Solution {public: int removeElement(vector<int>& nums, int val) { int size = nums.size(); for(int &it:nums){ if(it==val){ it=INT_MAX; size--;原创 2021-11-07 14:40:25 · 69 阅读 · 0 评论 -
泰波那契数以及对long/int范围的思考
1137. 第 N 个泰波那契数递归(超时)class Solution {public: int tribonacci(int n) { switch(n){ case 0: return 0; case 1: return 1; case 2: return 1; default:原创 2021-11-03 12:02:32 · 96 阅读 · 0 评论 -
斐波那契数的n中解法
509. 斐波那契数递归很快啊!看到这个名字直接递归处理class Solution {public: int fib(int n) { if(n==0)return 0; if(n==1)return 1; return fib(n-1)+fib(n-2); }};其实仔细发现,这里的处理是非常低效的,会重复计算,如下图,可以看到重复计算了f(18)、f(17)等数据。这是动态规划问题的第一个性质:重叠子问题。时间复杂度:为原创 2021-11-02 22:13:18 · 177 阅读 · 0 评论 -
1944. 队列中可以看到的人数(单调栈)
1944. 队列中可以看到的人数第一次尝试困难的题目,不过看评论区说好像配不上困难这个级别,但我做不出来????毫无技巧的暴力解法(超时)class Solution {public: vector<int> canSeePersonsCount(vector<int>& heights) { vector<int> result; int num=0; //看到的人 for(int i=0;i&l原创 2021-10-30 19:57:59 · 187 阅读 · 0 评论 -
739. 每日温度(C++)单调栈的应用
739. 每日温度无语了相对简单我还是不会。日常超时自己写的暴力算法(超时)class Solution {public: vector<int> dailyTemperatures(vector<int>& temperatures) { vector<int> result; int i,j; for(i=0;i<temperatures.size();i++){原创 2021-10-23 00:21:14 · 253 阅读 · 0 评论 -
453. 最小操作次数使数组元素相等
453. 最小操作次数使数组元素相等简单题?对不起,是我菜了。给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。示例 1:输入:nums = [1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]示例 2:输入:nums = [1,1,1]输出:0提示:n == nums.l原创 2021-10-20 16:34:12 · 281 阅读 · 0 评论 -
791.自定义字符串排序(C++)
791.自定义字符串排序字符串S和 T 只包含小写字符。在S中,所有字符只会出现一次。S 已经根据某种规则进行了排序。我们要根据S中的字符顺序对T进行排序。更具体地说,如果S中x在y之前出现,那么返回的字符串中x也应出现在y之前。返回任意一种符合条件的字符串T。示例:输入:S = “cba”T = “abcd”输出: “cbad”解释:S中出现了字符 “a”, “b”, “c”, 所以 “a”, “b”, “c” 的顺序应该是 “c”, “b”, “a”.由于 “d” 没有在S中出现原创 2021-10-19 20:49:00 · 578 阅读 · 1 评论 -
38. 外观数列(C++)
38. 外观数列给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。到这里有点不知所云,看下面例子就知道题目具体要求了。示例1:111211211111221第一项是数字 1 描述前一原创 2021-10-16 16:13:57 · 730 阅读 · 0 评论 -
441.排列硬币(C++)
441.排列硬币你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。输入:n = 5输出:2解释:因为第三行不完整,所以返回 2 。输入:n = 8输出:3解释:因为第四行不完整,所以返回 3 。提示:1 <= n <= 231 - 1递归求解拿到题目很快啊!直接就利用数学公式求解,发现忘了求根公式这种原创 2021-10-10 21:28:15 · 311 阅读 · 0 评论 -
面试题 16.02. 单词频率(C++)
面试题 16.02. 单词频率(C++)设计一个方法,找出任意指定单词在一本书中的出现频率。你的实现应该支持如下操作:WordsFrequency(book)构造函数,参数为字符串数组构成的一本书get(word)查询指定单词在书中出现的频率示例:WordsFrequency wordsFrequency = new WordsFrequency({“i”, “have”, “an”, “apple”, “he”, “have”, “a”, “pen”});wordsFrequency.ge原创 2021-10-09 14:31:46 · 214 阅读 · 0 评论 -
两数相加(C++)
两数相等(C++)给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9原创 2021-10-08 14:23:27 · 2220 阅读 · 0 评论