![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣刷题笔记
程序媛JD
迈进码农的世界啦,加油
展开
-
剑指 Offer II 013. 二维子矩阵的和(c++)
剑指 Offer II 013. 二维子矩阵的和原创 2022-07-31 14:35:27 · 387 阅读 · 0 评论 -
剑指 Offer II 012. 左右两边子数组的和相等(c++)
剑指 Offer II 012. 左右两边子数组的和相等原创 2022-07-31 13:56:25 · 265 阅读 · 0 评论 -
剑指 Offer II 008. 和大于等于 target 的最短子数组(c++)
剑指 Offer II 008. 和大于等于 target 的最短子数组原创 2022-07-27 20:19:01 · 276 阅读 · 0 评论 -
剑指 Offer II 005. 单词长度的最大乘积(c++)
剑指 Offer II 005. 单词长度的最大乘积原创 2022-07-24 15:02:45 · 195 阅读 · 0 评论 -
HJ29 字符串加解密(c++)
HJ29 字符串加解密原创 2022-07-16 16:09:02 · 464 阅读 · 0 评论 -
HJ20 密码验证合格程序(c++)
力扣题原创 2022-07-16 15:20:58 · 496 阅读 · 0 评论 -
2336. 无限集中的最小数字(c++)
力扣周赛原创 2022-07-13 21:38:39 · 325 阅读 · 0 评论 -
2335. 装满杯子需要的最短总时长
力扣周赛原创 2022-07-13 21:22:15 · 186 阅读 · 0 评论 -
剑指offer35复杂链表的复制
复杂链表的复杂,深拷贝原创 2022-06-09 17:43:03 · 130 阅读 · 1 评论 -
剑指 Offer 30. 包含min函数的栈(c++/go)
剑指 Offer 30. 包含min函数的栈原创 2022-06-07 21:22:00 · 115 阅读 · 0 评论 -
617. 合并二叉树(c++/go)
Go:原创 2022-06-02 17:57:36 · 160 阅读 · 0 评论 -
2. 两数相加(c++/go/链表相加)
c++:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), nex..原创 2022-05-22 21:43:06 · 176 阅读 · 0 评论 -
232. 用栈实现队列(c++/go)
c++:class MyQueue {public: stack<int>stkin; stack<int>stkout; MyQueue() { } void push(int x) { stkin.push(x); } int pop() { if(stkout.empty()){// 只有当stOut为空的时候,再从stIn里导入数据(导入stIn全部数据) .原创 2022-05-14 17:23:26 · 144 阅读 · 0 评论 -
28. 实现 strStr()(c++/go)
暴力解:c++:class Solution {public: int strStr(string haystack, string needle) { int m = haystack.size(),n = needle.size(); for(int i = 0; i+n <= m; i++){ bool flag = true; for(int j = 0; j < n; j++){ .原创 2022-05-14 14:14:39 · 105 阅读 · 0 评论 -
541. 反转字符串 II(c++/Go)
class Solution {public: string reverseStr(string s, int k) { for(int i = 0; i < s.size(); i += 2*k){ if(i+k < s.size()){ reverse(s.begin()+i, s.begin()+i+k);//如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 .原创 2022-05-05 20:46:13 · 156 阅读 · 0 评论 -
17. 电话号码的字母组合(c++)
class Solution {public: vector<string>res;//存结果 string temp; //哈希存数据 unordered_map<char,string> phone_map { {'2',"abc"}, {'3',"def"}, {'4',"ghi"}, {'5',"jkl"}, {'6',"mno"}, {'7'..原创 2022-04-14 11:19:49 · 1410 阅读 · 0 评论 -
383. 赎金信(c++/go/哈希)
c++:class Solution {public: bool canConstruct(string ransomNote, string magazine) { int record[26] = {}; for(int i = 0; i < magazine.size();i++){ // 通过recode数据记录 magazine里各个字符出现次数 record[magazine[i] - 'a']..原创 2022-05-03 16:56:32 · 131 阅读 · 0 评论 -
454. 四数相加 II(c++/go/哈希)
c++:class Solution {public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { unordered_map<int,int>umap;//key:a+b的数值,value:a+b数值出现的次数 //..原创 2022-05-03 15:58:37 · 352 阅读 · 0 评论 -
202. 快乐数(c++/go)
c++:class Solution {public: bool isHappy(int n) { unordered_set<int>s; while(1){ int sum = getSum(n); if(sum == 1){ return true; } // 如果这个sum曾经出现过,说明已经陷入了无限循环了,立..原创 2022-05-03 13:11:13 · 293 阅读 · 0 评论 -
349. 两个数组的交集(c++/go)
c++:class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { unordered_set<int>res1;//set去重 unordered_set<int>res2(nums1.begin(),nums1.end());//set去重 for.原创 2022-04-30 21:45:44 · 334 阅读 · 0 评论 -
242. 有效的字母异位词(c++/go/哈希)
c++:class Solution {public: bool isAnagram(string s, string t) { int record[26] = {0}; //记录s中每个字母出现的次数 for(int i = 0; i < s.size(); i++){ record[s[i] - 'a']++; } //在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值.原创 2022-04-25 17:21:12 · 316 阅读 · 0 评论 -
203. 移除链表元素(c++/go)
c++:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), n...原创 2022-04-25 16:26:30 · 733 阅读 · 0 评论 -
904. 水果成篮(c++)
滑动窗口:class Solution {public: int totalFruit(vector<int>& fruits) { int max_len = 0; int left = 0; unordered_map<int,int>mp; for(int right = 0; right < fruits.size();right++){ mp[fruits...原创 2022-04-19 15:57:08 · 729 阅读 · 0 评论 -
209. 长度最小的子数组(c++)
class Solution {public: int minSubArrayLen(int target, vector<int>& nums) { int min_len = INT_MAX; int i = 0;//窗口的起始位置设置为数组的起始位置就可以了。 int sum = 0; for(int j = 0; j < nums.size(); j++){//窗口的结束位置就是遍历数组的指针 ..原创 2022-04-19 11:10:46 · 913 阅读 · 1 评论 -
977. 有序数组的平方(c++)
暴力解:class Solution {public: vector<int> sortedSquares(vector<int>& nums) { for(int i = 0; i < nums.size(); i++){ nums[i] = nums[i]*nums[i]; } sort(nums.begin(),nums.end()); return nums;.原创 2022-04-18 20:26:47 · 295 阅读 · 0 评论 -
27. 移除元素(c++)
双指针法双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。class Solution {public: int removeElement(vector<int>& nums, int val) { int slowindex = 0; for(int fastindex = 0; fastindex < nums.size(); fastindex++){ if(..原创 2022-04-18 20:03:28 · 586 阅读 · 0 评论 -
剑指 Offer 49. 丑数(c++)
#include<iostream>using namespace std;#include<vector>#include<unordered_set>#include<queue>class Solution {public: int nthUglyNumber(int n) { vector<int>factor = {2,3,5};//质因子 2、3 和 5 unordered_se..原创 2022-04-18 15:36:25 · 176 阅读 · 0 评论 -
剑指 Offer 60. n个骰子的点数(c++)
#include<iostream>using namespace std;#include<vector>class Solution {public: vector<double> dicesProbability(int n) { //因为最后的结果只与前一个动态转移数组有关,所以这里只需要设置一个一维的动态转移数组 //原本dp[i][j]表示的是前i个骰子的点数之和为j的概率,现在只需要最后的状态的数组,所以就.原创 2022-04-18 11:18:30 · 137 阅读 · 0 评论 -
31. 下一个排列(c++)
class Solution {public: void nextPermutation(vector<int>& nums) { int i = nums.size()-2; //1.首先从后向前查找第一个顺序对 (i,i+1),满足 a[i] < a[i+1]。这样「较小数」即为a[i]。此时 [i+1,n)必然是下降序列。 while(i >= 0 && nums[i] >= num...原创 2022-04-15 10:42:44 · 783 阅读 · 0 评论 -
BM3 链表中的节点每k个一组翻转(c++)
方法一 模拟法将一条链表分块分为链表长度/k块链表,如果处不尽则说明后面会有剩下的那一块是不满长度为k的。在最初的时候需要定义两个NodeList表示res(结果)和 now(当前所到达的结果链表的位置)。之后遍历块的长度,对每一个链表块进行翻转,再翻转完后将完成的链表插入到now链表的下一个,再将now链表更新到最前即可。/** * struct ListNode { * int val; * struct ListNode *next; * }; */class Solution .原创 2022-04-12 16:48:36 · 1114 阅读 · 0 评论 -
HJ32 密码截取(c++/最长回文子串)
一、暴力解:O(N^3)#include<iostream>#include<string>using namespace std;//判断是否为回文串bool is_palindrome(string s){ if(s.size() == 1){ return true; } int i = 0; int j = s.size()-1; while(i < j){ if(s[i] != s[..原创 2022-04-12 10:57:23 · 343 阅读 · 0 评论 -
HJ17 坐标移动(c++/python)
c++:#include<iostream>#include<vector>#include<string>using namespace std;int main(){ string s; vector<string>temp; while(cin >> s){ int sublen = 0; for(int i = 0; i < s.size(); i++){ ..原创 2022-04-08 16:39:05 · 1519 阅读 · 0 评论 -
最长上升子序列(c++)
class Solution {public: /** * retrun the longest increasing subsequence * @param arr int整型vector the array * @return int整型vector */ vector<int> LIS(vector<int>& arr) { // write code here vecto...原创 2022-04-08 16:15:22 · 615 阅读 · 0 评论 -
NC109 岛屿数量(c++/DFS/BFS)
深度优先搜索(dfs):// 栈实现深度优先遍历 dfsclass Solution {public: /** * 判断岛屿数量 * @param grid char字符型vector<vector<>> * @return int整型 */ int solve(vector<vector<char> >& grid) { // write code here ..原创 2022-04-07 16:40:16 · 990 阅读 · 0 评论 -
22. 括号生成(c++)
当前左右括号都有小于n个可以使用的时候,才产生分支;产生左分支的时候,只看当前是否还有左括号可以使用;产生右分支的时候,还受到左分支的限制,右边剩余可以使用的括号数量一定得在严格小于左边剩余的数量的时候,才可以产生分支;在左边和右边剩余的括号数都等于 n的时候结算。一、#include<iostream>#include<stdio.h>#include<vector>#include<string>using namespace st..原创 2022-03-29 10:49:18 · 2899 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II(c++/动态规划)
class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); int dp[n][2]; dp[0][0] = 0;//没有股票 dp[0][1] = -prices[0];//持有股票 for(int i = 1; i < n; i++){ dp[i][0]...原创 2022-03-26 20:30:09 · 1024 阅读 · 0 评论 -
64. 最小路径和(c++)
class Solution {public: int minPathSum(vector<vector<int>>& grid) { if(grid.size() == 0 && grid[0].size() == 0){ return 0; } int n = grid.size(); int m = grid[0].size(); vec..原创 2022-03-26 20:05:04 · 1297 阅读 · 0 评论 -
300. 最长递增子序列(c++)
class Solution {public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); vector<int>dp(n,0); int max_len = 0; for(int i = 0; i < n; i++){ dp[i] = 1; for(int j = 0; j..原创 2022-03-25 11:37:26 · 1073 阅读 · 0 评论 -
895. 最大频率栈(c++)
#include<iostream>#include<unordered_map>#include<stack>#include<string>using namespace std;class FreqStack{public: FreqStack(){ } void push(int val){ ++m[val]; max_f = max(max_f,m[val]);//更新最大频率 ..原创 2022-03-24 10:23:34 · 774 阅读 · 0 评论 -
BM30 二叉搜索树与双向链表(c++)
解题思路:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: vector<TreeNode*>treelist; TreeNode* Convert(TreeNode* pRootOfTre.原创 2022-03-24 10:01:14 · 1387 阅读 · 0 评论