![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 82
the_kingdom_of_
这个作者很懒,什么都没留下…
展开
-
数组中两个数的最大异或值
数组中两个数的最大异或值给定一个非空数组,数组中元素为 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 。找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ≤ i, j < n 。你能在O(n)的时间解决这个问题吗?示例:输入: [3, 10, 5, 25, 2, 8]输出: 28解释: 最大的结果是 5 ^ 25 = 28.题解思路:【Trie树】Trie树建立的思路,整数在存储时需要32bit,因此可以把整数看作为含有32字符的原创 2020-08-13 19:01:37 · 1110 阅读 · 0 评论 -
存在重复元素 III
存在重复元素 III在整数数组 nums 中,是否存在两个下标 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝对值也小于等于 ķ 。如果存在则返回 true,不存在返回 false。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:输入: nums = [1,5,9,1,原创 2020-08-08 22:14:45 · 113 阅读 · 0 评论 -
二叉树的最近公共祖先
二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释:原创 2020-08-04 11:48:25 · 119 阅读 · 0 评论 -
二叉树的中序遍历
二叉树的中序遍历给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2]题解思路:中序遍历和前序遍历的不同在于入栈顺序不同,想要结果集按照左子树、根节点、右子树的顺序存储,那么遍历二叉树结点时就需要以又孩子、根节点、左孩子的顺序入栈。最先让根节点入栈(此时是它第一次入栈),在栈非空的情况下,用临时结点对象保存栈顶结点,然后栈顶结点出栈,接下来就可以顺着临时结点对象找到栈顶结点的右孩子(原创 2020-08-02 17:58:09 · 224 阅读 · 0 评论 -
单词规律
单词规律给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba", str = "dog cat cat fish"输出: false示例 3:输入: pattern原创 2020-07-30 18:44:53 · 141 阅读 · 0 评论 -
存在重复元素
存在重复元素给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true题解方法一:用unordered_map来存储不同元素在nums中出现的次数。(unordered_map是基于哈希表实现的,对unord原创 2020-07-25 11:24:23 · 142 阅读 · 0 评论 -
打家劫舍
打家劫舍LeetCode题目题解这个动态规划太考验思维了 没事的时候再多想想int rob(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return nums[0]; int dp1=nums[0],dp2=max(nums[1],nums[0]),dp=max(dp1,dp2); for(int i=2;i<num原创 2020-07-22 14:21:25 · 98 阅读 · 0 评论 -
反转字符串中的元音字母
反转字符串中的元音字母编写一个函数,以字符串作为输入,反转该字符串中的元音字母。(理解:将字符串中成对的首尾元音字符进行交换)示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"题解思路:利用双端队列存储字符串中所有元音字符的下标,再利用deque的首尾可操作性通过string的swap()函数交换s中被标记的元音字符,直到deque中只剩下一个单字符或者为空,整个字符串反转结束。 string reverseV原创 2020-07-22 12:17:04 · 273 阅读 · 0 评论 -
最小栈
最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,nul原创 2020-07-20 12:58:55 · 86 阅读 · 0 评论 -
买卖股票的最佳时机
买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票原创 2020-07-15 11:13:55 · 144 阅读 · 0 评论 -
删除排序链表中的重复元素
删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3题解ListNode* deleteDuplicates(ListNode* head) { if(head==NULL||head->next==NULL) return head;//若头节点为空没有操作直接返原创 2020-07-10 10:29:02 · 101 阅读 · 0 评论 -
最后一个单词的长度
最后一个单词的长度给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成示例输入: "Hello World"输出: 5题解//因为是查找最后一个单词的长度 所以用for循环倒着遍历int lengthOfLastWord(string s) { int n=0;//用来记录倒叙搜索时第一个单词的长度 for(int原创 2020-07-07 12:41:57 · 113 阅读 · 0 评论 -
实现 strStr()
实现 strStr()给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1题解直接利用C++常用字符串函数 int strStr(string haystack, st原创 2020-07-05 11:34:03 · 91 阅读 · 0 评论 -
移除元素
移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,原创 2020-07-05 09:44:57 · 157 阅读 · 2 评论 -
有效的括号
有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。题解bool isValid(string s) { stack<char> c; if(s=="") return true; for(int i=0;i<s.length();i++){原创 2020-07-04 11:11:36 · 96 阅读 · 0 评论 -
最长公共前缀
最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。题解string longestCommonPrefix(vector<string>& strs) { string c; int k=0;原创 2020-07-04 08:32:30 · 89 阅读 · 0 评论