![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
earlene_wyl
这个作者很懒,什么都没留下…
展开
-
leetcode 377. 组合总和 Ⅳ medium
leetcode377. 组合总和 Ⅳ medium 题目描述:解题思路:因为顺序不同的序列会被视作不同的组合,也就是求排列,所以不能用完全背包来求解(求组合数可以用完全背包),有些题解里说这是特殊的完全背包,我觉得好牵强啊因为完全背包求组合数的状态转移方程是 dp[n][v] = dp[n-1][v]+dp[n][v-nums[i]]。我们可以假设dp[n][v]表示用前n个nums【i】元素,目标和恰为v的排列数,但是 +dp[n][v-nums[i]...原创 2022-01-05 23:47:23 · 283 阅读 · 0 评论 -
leetcode 714. 买卖股票的最 佳时机含手续费 medium
leetcode714. 买卖股票的最佳时机含手续费 medium 题目描述:解题思路:手续费,可以在买入扣,也可以在卖出的时候扣,只不过应该是第0天初始化,而不再是第-1天。否则可能值越界,或者有别的什么问题,没想好 oRZ代码://class Solution {public: int maxProfit(vector<int>& prices, int fee) { if (prices.si...原创 2022-01-04 22:53:46 · 651 阅读 · 0 评论 -
leetcode 64. 最小路径和 medium
leetcode64. 最小路径和 medium 题目描述:给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思...原创 2019-08-03 00:05:52 · 155 阅读 · 0 评论 -
leetcode 673. 最长递增子序列的个数 medium
leetcode673. 最长递增子序列的个数 medium 题目描述:解题思路:只想到了O(n^2)的 dp, 贪心的没想到,不过u1s1, 应该也不会考到代码:dp版//class Solution {public: int findNumberOfLIS(vector<int>& nums) { vector<int> dp_nums(nums.size(), 1); ...原创 2022-01-04 11:36:51 · 399 阅读 · 0 评论 -
leetcode 785. 判断二分图 medium
leetcode785. 判断二分图 medium 题目描述:解题思路:代码://class Solution {public: bool isBipartite(vector<vector<int>>& graph) { vector<int> colors(graph.size(), UNKNOW); for (int i = 0;...原创 2021-12-30 19:24:37 · 296 阅读 · 0 评论 -
leetcode 797. 所有可能的路径 medium
leetcode797. 所有可能的路径 medium 题目描述:解题思路:dfs, 因为是无环图,所以不需要visited数组代码://class Solution {public: vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) { vector<vector<i...原创 2021-12-30 16:12:25 · 172 阅读 · 0 评论 -
leetcode 二分 - 山脉数组 941 && 852 && 1095
leetcode941. 有效的山脉数组 easymedium 题目描述:解题思路:线性扫描即可, 但其实这题我觉得是3道里面最难的 orz代码://class Solution {public: bool validMountainArray(vector<int>& arr) { int n = arr.size(); if (n < 3) re...原创 2021-12-17 17:51:35 · 221 阅读 · 0 评论 -
leetcode 面试题 10.03. 搜索旋转数组 medium
leetcode面试题 10.03. 搜索旋转数组 medium 题目描述:解题思路:首先多次旋转,最后还是两段递增的序列,也就是跟leetcode 81一样的。因为要求返回索引值最小的,所以需要删除结尾重复的(让最后找到的下标是在前面)代码://class Solution {public: int search(vector<int>& arr, int target) { if (arr....原创 2021-12-17 16:33:51 · 290 阅读 · 0 评论 -
leetcode 704. 二分查找 easy
leetcode704. 二分查找 easy 题目描述:解题思路:练二分模板的套路题代码://class Solution {public: int search(vector<int>& nums, int target) { if (nums.empty()) return -1; int l = 0, r = nums.size()-1;...原创 2021-12-17 16:26:18 · 230 阅读 · 0 评论 -
leetcode 242 && 349 && 202 & 383
这些题都挺无聊的 ORZleetcode 242. 有效的字母异位词easy 题目描述:解题思路:hash表统计词频代码://class Solution {public: bool isAnagram(string s, string t) { int count[26] = {}; for (char c: s) count[c - 'a']++; fo...原创 2021-12-16 22:15:52 · 90 阅读 · 0 评论 -
leetcode 41. 缺失的第一个正数 hard
leetcode 41. 缺失的第一个正数hard 题目描述:解题思路:爷就是神,hard题大概几分钟就想到了解法。。其实跟剑指 Offer 03. 数组中重复的数字的思路是一样的。确实有点哈希的感觉,或许真可以叫原地哈希?代码://class Solution {public: int firstMissingPositive(vector<int>& nums) { int n = nums.si...原创 2021-12-16 21:39:12 · 86 阅读 · 0 评论 -
leetcode 594 && 128
leetcode594. 最长和谐子序列 easy 题目描述:解题思路:hash表统计每个数出现过的次数,然后遍历hash,求以当前数为最小值的最长和谐子序列,其实也就是求当前数 和(当前数+1)的次数之和。代码:class Solution {public: int findLHS(vector<int>& nums) { unordered_map<int, int> hash;...原创 2021-12-16 20:37:18 · 87 阅读 · 0 评论 -
leetcode 231 && 342 && 371 && 318 && 338
leetcode231. 2 的幂 easy题目描述:解题思路:n大于0,且二进制表示只有一个1即可代码://class Solution {public: bool isPowerOfTwo(int n) { return n > 0 && (n & (n -1)) == 0; // n 大于0, 且只有一个1 }};leetcode342. 4的幂 easy ...原创 2021-12-16 00:40:10 · 643 阅读 · 0 评论 -
leetcode 190. 颠倒二进制位 easy
leetcode190. 颠倒二进制位 easy 题目描述:解题思路:逐位颠倒代码://class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t res = 0; for (int i = 0; i < 32; i++){ res <<= 1; ...原创 2021-12-16 00:40:17 · 78 阅读 · 0 评论 -
leetcode 260. 只出现一次的数字 III medium
leetcode260. 只出现一次的数字 III medium 题目描述:解题思路:两个不相等的元素在位级表示上必定会有一位存在不同。将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。flag &= -flag 得到出 flag 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。代码:class Solution {public: vect...原创 2021-12-15 19:12:40 · 199 阅读 · 0 评论 -
leetcode 268. 丢失的数字 easy
leetcode268. 丢失的数字 easy 题目描述:解题思路:还是利用异或的性质, 先得到【0,n】异或的值,再挨个异或数组里的值代码://class Solution {public: int missingNumber(vector<int>& nums) { int res = 0; for (int i = 0; i <= nums.size(); i++) ...原创 2021-12-15 18:55:15 · 775 阅读 · 0 评论 -
leetcode 136. 只出现一次的数字 easy
leetcode136. 只出现一次的数字 easy 题目描述:解题思路:a^a = 0, a^0 = a 异或满足交换律结合律代码:class Solution {public: int singleNumber(vector<int>& nums) { int res = 0; for (auto num: nums) res ^= num; ret...原创 2021-12-15 18:47:23 · 193 阅读 · 0 评论 -
leetcode 461. 汉明距离 easy
leetcode461. 汉明距离 easy 题目描述:解题思路:异或, 然后n&(n-1)把最后一个1变为0来统计1的个数代码://class Solution {public: int hammingDistance(int x, int y) { int cur = x^y; int res = 0; while(cur){ res += 1; ...原创 2021-12-15 18:43:55 · 199 阅读 · 0 评论 -
leetcode 524. 通过删除字母匹配到字典里最长单词 medium
leetcode524. 通过删除字母匹配到字典里最长单词medium 题目描述:解题思路:实际两个问题的组合:1. 如何判断字符串s2是s1的子序列2. 如何得到长度最长且字母序最小的 结果问题1可以用双指针来判断,问题2可以先给dictionary 排序来优化c++ sort 之后的结果是,调用comp(i, i+n)的结果是true。 所以要想长度最长且字母序最小autocmp=[](conststring...原创 2021-12-15 15:21:53 · 1083 阅读 · 0 评论 -
leetcode 680. 验证回文字符串 Ⅱ easy
leetcode680. 验证回文字符串 Ⅱ easy 题目描述:解题思路:贪心+双指针。。不过简单题确实想一想就会代码://class Solution {public: bool validPalindrome(string s) { int l = 0, r = s.size()-1; while (l < r){ if (s[l] != s[r]) ...原创 2021-12-15 14:27:23 · 71 阅读 · 0 评论 -
leetcode 345. 反转字符串中的元音字母 easy
leetcode345. 反转字符串中的元音字母 easy 题目描述:解题思路:双指针遍历到元音字母,交换代码://class Solution {public: string reverseVowels(string s) { int l = 0, r = s.size()-1; unordered_set<char> hash = {'a', 'e', 'i', 'o', 'u'}; ...原创 2021-12-15 14:11:48 · 65 阅读 · 0 评论 -
leetcode 283. 移动零 easy
leetcode283. 移动零 easy 题目描述:解题思路:因为只要保证非零元素的相对顺序, 借鉴快排的partition。代码://class Solution {public: void moveZeroes(vector<int>& nums) { int tail = 0; // 表示下一个非0 要放的下标 // 【0, tail-1】 表示非0区域 【tail,i】是0区域 ...原创 2021-12-15 13:35:33 · 339 阅读 · 0 评论 -
【无标题】
leetcode611. 有效三角形的个数 medium 题目描述:解题思路:首先对数组排序。 固定最长的一条边,运用双指针扫描可能对这种排完序的数组,就得想想双指针?代码:class Solution {public: int triangleNumber(vector<int>& nums) { if (nums.size() < 3) return 0; ...原创 2021-12-15 13:10:44 · 876 阅读 · 0 评论 -
leetcode 27. 移除元素 easy
leetcode27. 移除元素 easy 题目描述:解题思路:双指针代码://class Solution {public: int removeElement(vector<int>& nums, int val) { int pre = -1; for (int i = 0; i < nums.size(); i++){ if (nums[i] !=...原创 2021-12-15 10:32:05 · 598 阅读 · 0 评论 -
leetcode 633. 平方数之和 medium
leetcode 633. 平方数之和medium 题目描述:解题思路:双指针, i从0开始取,j从可取的最大数sqrt(c)开始代码://class Solution {public: bool judgeSquareSum(int c) { int i = 0; int j = sqrt(c); while (i<=j){ long long cur ...原创 2021-12-14 21:50:54 · 88 阅读 · 0 评论 -
leetcode 912. 排序数组 medium (验证各种排序)
leetcode 912. 排序数组medium 题目描述:解题思路:用来验证各种排序算法,写的对不对代码:快排class Solution {public: vector<int> sortArray(vector<int>& nums) { quick_sort(nums, 0, nums.size()-1); return nums; } v...原创 2021-12-14 17:03:12 · 111 阅读 · 0 评论 -
leetcode 451. 根据字符出现频率排序 medium
leetcode 451. 根据字符出现频率排序 medium 题目描述:解题思路:hash表统计词频+ 桶排(堆排也可)代码://class Solution {public: string frequencySort(string s) { int max_cnt = 0; unordered_map<char, int> hash; for (char &c: s)...原创 2021-12-14 16:39:51 · 83 阅读 · 0 评论 -
leetcode 215. 数组中的第K个最大元素 medium
leetcode215. 数组中的第K个最大元素 medium 题目描述:解题思路:方法一: 快速选择 (时间复杂度 O(n)空间复杂度O(1))方法二: 求第k个最大, 用最小堆 (时间复杂度 O(nlogk), 空间O(k))代码:// 快速选择class Solution {public: int findKthLargest(vector<int>& nums, int k) { if ...原创 2021-12-14 15:54:02 · 367 阅读 · 0 评论 -
leetcode 503. 下一个更大元素 II medium
leetcode503. 下一个更大元素 II medium 题目描述:解题思路:方法一:循环数组 :我们可以把这个循环数组「拉直」,即复制该序列的前n-1n−1个元素拼接在原序列的后面。 这样循环数组就变成了普通数组, 所以我们就可以用单调栈, 求右边第一个比它大的。方法二:还是用单调栈,但是这次不用从右向左那个模板,而是从左向右求右边第一个比它大的。代码:// 方法一class Solution {public: ...原创 2021-12-13 21:07:05 · 181 阅读 · 0 评论 -
leetcode 739. 每日温度 medium
leetcode 739. 每日温度 medium 题目描述:解题思路:单调栈, 求右边最近比它大的。所以从右向左遍历,并且栈顶的元素得是大于当前元素,才能入栈,否则栈顶出栈。代码:class Solution {public: vector<int> dailyTemperatures(vector<int>& temperatures) { if (temperatures....原创 2021-12-13 20:18:44 · 184 阅读 · 0 评论 -
leetcode 946. 验证栈序列 medium
leetcode 946. 验证栈序列 medium 题目描述:解题思路:建立一个辅助栈,按压栈顺序压栈,按出栈顺序出栈具体办法:遍历入栈顺序: 假如当前栈顶和当前被比较的出栈数字一样,那就出栈,直到不一样为止。否则继续入栈。代码:class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>&a...原创 2021-12-13 16:27:34 · 186 阅读 · 0 评论 -
leetcode 225. 用队列实现栈 easy
leetcode225. 用队列实现栈 easy题目描述:解题思路:可以用一个队列实现, push的时候,把之前的元素都pop,push回去代码:class MyStack {public: MyStack() { } void push(int x) { int len = que.size(); que.push(x); for (int i = 0; i < len...原创 2021-12-13 15:42:44 · 565 阅读 · 0 评论 -
leetcode 460. LFU 缓存 hard
leetcode460. LFU 缓存 hard 题目描述:请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。实现 LFUCache 类:LFUCache(int capacity) - 用数据结构的容量capacity 初始化对象int get(int key)- 如果键存在于缓存中,则获取键的值,否则返回 -1。void put(int key, int value)- 如果键已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量时,则应该在...原创 2021-12-12 12:34:38 · 290 阅读 · 0 评论 -
leetcode n数之和 1 && 167 && 15 && 16 && 18 && 454
leetcode1. 两数之和 easy_speargod的博客-CSDN博客leetcode167. 两数之和 II - 输入有序数组 easy_speargod的博客-CSDN博客leetcode15. 三数之和 medium_speargod的博客-CSDN博客leetcode16. 最接近的三数之和 medium_speargod的博客-CSDN博客 leetcode 18. 四数之和 medium_speargod的博客-CSDN博客 leetcode...原创 2021-11-05 18:39:11 · 81 阅读 · 0 评论 -
leetcode 18. 四数之和 medium
leetcode18. 四数之和 medium题目描述:给你一个由 n 个整数组成的数组nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d< na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按...原创 2021-11-05 16:01:03 · 105 阅读 · 0 评论 -
leetcode 454. 四数相加 II medium
leetcode454. 四数相加 IImedium题目描述:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0解题思路:我们可以将四个数组分成两部分,AA 和 BB 为一组,CC 和 DD 为另外一组。对于 AA 和 BB,我们使用...原创 2021-11-05 15:58:07 · 115 阅读 · 0 评论 -
leetcode 725. 分隔链表 meidum
leetcode725. 分隔链表meidum题目描述:给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。这 k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。返回一个由上述 k 部分组成的数组。解题思路:模拟这个过程即可代码:///** * Defi...原创 2021-11-04 18:47:36 · 137 阅读 · 0 评论 -
leetcode 234. 回文链表 easy
leetcode234. 回文链表easy题目描述:给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。解题思路:快慢指针找到中间位置, 右半区逆序, 比较完之后再恢复回来代码:///** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li...原创 2021-11-04 14:21:45 · 81 阅读 · 0 评论 -
leetcode 143. 重排链表 medium
leetcode143. 重排链表medium题目描述:给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0→ L1→ … → Ln-1→ Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→ …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。解题思路:寻找链表中点 + 链表逆序 + 合并链表代码:/** * Definition for singly-linked list....原创 2021-11-03 11:32:41 · 166 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列题目描述:输入一个字符串(字符可能有重复),打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]解题思路:经典的dfs全排列+一点小套路1. 为了避免重复,先sort一下,让重复的数字挨着2. 剪枝: 除了被访问过不能再用之外,假如 i>0 && nums【i原创 2021-10-23 14:55:29 · 92 阅读 · 0 评论