
刷穿力扣之路
菜狗要拿offer
幽殇默
他时若遂凌云志,敢笑黄巢不丈夫。
展开
-
559. N 叉树的最大深度【简单】
https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree//*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Nod.原创 2021-11-21 22:55:32 · 357 阅读 · 0 评论 -
237. 删除链表中的节点【链表】
https://leetcode-cn.com/problems/delete-node-in-a-linked-list/要想自己删自己,只需替换自己的值为儿子的值,删除儿子即可。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */cla.原创 2021-11-02 08:52:49 · 78 阅读 · 0 评论 -
【力扣】31. 下一个排列
题目地址class Solution {public: void nextPermutation(vector<int>& nums) { next_permutation(nums.begin(),nums.end()); }};正规解法:原创 2021-06-21 14:20:44 · 97 阅读 · 1 评论 -
【力扣】29. 两数相除
题目地址class Solution {public: int divide(int dividend, int divisor) { long long int temp=1ll*dividend/divisor; if(temp>INT_MAX) return INT_MAX; return dividend/divisor; }};正解:用二进制倍增的思想也就是说x可以减k次y。我们将k弄成二进制,预处理每一个数。.原创 2021-06-20 10:27:56 · 137 阅读 · 0 评论 -
【力扣】28. 实现 strStr()
题目地址class Solution {public: int strStr(string haystack, string needle) { return haystack.find(needle); }};KMP方法:class Solution {public: int strStr(string s, string p) { if(p.empty()) return 0; int n=s.size(),m=p..原创 2021-06-19 14:24:05 · 116 阅读 · 0 评论 -
【力扣】27. 移除元素
题目地址class Solution {public: int removeElement(vector<int>& nums, int val) { int k=0; for(int i=0;i<nums.size();i++) if(nums[i]!=val) nums[k++]=nums[i]; return k; }};原创 2021-06-18 08:58:52 · 89 阅读 · 0 评论 -
【力扣】26. 删除有序数组中的重复项
题目地址class Solution {public: int removeDuplicates(vector<int>& nums) { int ans=0; int t=999999; for(int i=0;i<nums.size();i++) { if(t==nums[i]) continue; else { .原创 2021-06-17 22:39:00 · 107 阅读 · 0 评论 -
【力扣】25. K 个一组翻转链表
题目地址/** * 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), next.原创 2021-06-15 14:08:21 · 136 阅读 · 1 评论 -
【力扣】24. 两两交换链表中的节点
题目地址我这种方法不是正解,因为交换的只是值,真正的指针并没有交换。/** * 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,.原创 2021-06-14 10:26:06 · 103 阅读 · 0 评论 -
【力扣】23. 合并K个升序链表
题目地址/** * 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), next.原创 2021-06-13 10:00:58 · 91 阅读 · 0 评论 -
【力扣】22. 括号生成
题目地址class Solution {public: vector<string> ve; vector<string> generateParenthesis(int n) { dfs(1,n,""); return ve; } void dfs(int index,int n,string s) { if(index==n*2+1) { stack<char>.原创 2021-06-12 13:53:27 · 88 阅读 · 0 评论 -
【力扣】 21. 合并两个有序链表
题目地址/** * 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), next.原创 2021-06-10 10:35:50 · 72 阅读 · 0 评论 -
【力扣】20. 有效的括号
题目地址非常裸的一个关于栈的应用class Solution {public: bool isValid(string s) { stack<char> st; map<char,char> mp; mp[')']='('; mp[']']='['; mp['}']='{'; for(int i=0;i<s.size();i++) { if(st.size()==0) s.原创 2021-06-09 09:26:25 · 88 阅读 · 0 评论 -
【力扣】19. 删除链表的倒数第 N 个结点
题目地址/** * 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), next.原创 2021-06-08 09:10:11 · 98 阅读 · 0 评论 -
【力扣】18. 四数之和
题目地址考察的双指针,先排序,用三层循环,里面用一个双指针。class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); vector<vector<int>> ans; for(int i=0;i<nums.s.原创 2021-06-07 14:23:33 · 97 阅读 · 0 评论 -
【力扣】17. 电话号码的字母组合
题目地址暴力模拟:class Solution {public: vector<string> letterCombinations(string digits) { string s[15]; s[0]="0",s[1]="!@#",s[2]="abc",s[3]="def",s[4]="ghi",s[5]="jkl"; s[6]="mno",s[7]="pqrs",s[8]="tuv",s[9]="wxyz"; vector.原创 2021-06-06 16:58:04 · 164 阅读 · 0 评论 -
【力扣】16. 最接近的三数之和
题目地址方法一: 双指针,如果k向后移动其差值反而变大了那么就breakclass Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); int sum=99999999; int temp=0; for(int i=0;i<nums.size();i++) .原创 2021-06-05 17:42:47 · 141 阅读 · 1 评论 -
【力扣】15. 三数之和
题目链接最后两点TLE做法class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { map< vector<int> , bool > mp; unordered_map<int,int>hush; vector<vector<int>> ans; .原创 2021-06-04 09:55:03 · 115 阅读 · 0 评论 -
【力扣】14. 最长公共前缀
https://leetcode-cn.com/problems/longest-common-prefix/class Solution {public: string longestCommonPrefix(vector<string>& strs) { string ans; if(strs.size()==1) return strs[0]; int k=0; while(1) { .原创 2021-06-03 14:26:48 · 109 阅读 · 0 评论 -
【力扣】13. 罗马数字转整数
题目地址class Solution {public: int romanToInt(string s) { int ans=0; map<char,int> mp; mp['I']=1; mp['V']=5; mp['X']=10; mp['L']=50; mp['C']=100; mp['D']=500; mp['M']=1000; .原创 2021-06-03 10:58:01 · 87 阅读 · 0 评论 -
【力扣】12. 整数转罗马数字
https://leetcode-cn.com/problems/integer-to-roman/class Solution {public: string intToRoman(int num) { string ans; int m_t=num/1000; for(int i=1;i<=m_t;i++) ans+="M"; num=num%1000; if(num>=900) ans+="CM",num-.原创 2021-06-03 09:11:32 · 113 阅读 · 0 评论 -
【力扣】11. 盛最多水的容器
题目地址用双指针,暴力一定会超时。木桶容量由短板和距离决定, 移动长板的话, 水面高度不可能再上升, 而宽度变小了, 所以只有通过移动两者中的短板, 才有可能使水位上升。class Solution {public: int maxArea(vector<int>& height) { int ans=0; int i=0,j=height.size()-1; while(i<j) { .原创 2021-06-02 22:48:43 · 90 阅读 · 0 评论 -
【力扣】9. 回文数
题目跳转class Solution {public: bool isPalindrome(int x) { if(x<0) return false; string a=to_string(x); int n=a.size(); for(int i=0;i<n/2;i++) if(a[i]!=a[n-i-1]) return false; return true; }.原创 2021-06-02 22:17:25 · 77 阅读 · 0 评论 -
【力扣】8. 字符串转换整数 (atoi)
题目链接class Solution {public: int myAtoi(string s) { string ans; bool flag=false; while(s[0]==' '&&s.size()>1) s=s.substr(1);//去除前导零 if(s[0]=='-') flag=true,s=s.substr(1); else if(s[0]=='+') s=s.substr(1);.原创 2021-06-03 09:38:13 · 128 阅读 · 0 评论 -
【力扣】7. 整数反转
https://leetcode-cn.com/problems/reverse-integer/class Solution {public: int reverse(long long int x) { bool flag=false; if(x<0) flag=true,x=-x; long long int ans=0; while(x) { ans=ans*10+x%10; .原创 2021-06-02 21:44:33 · 107 阅读 · 0 评论 -
【力扣】6. Z 字形变换
https://leetcode-cn.com/problems/zigzag-conversion/找规律的题:本质和弹弹球一样的,到底又回来,到顶又下去。class Solution {public: string convert(string s, int numRows) { string ss[1005]; int cnt=0; int k=0; bool flag=true; if(numRows==.原创 2021-06-02 20:01:28 · 93 阅读 · 0 评论 -
【力扣】5. 最长回文子串
https://leetcode-cn.com/problems/longest-palindromic-substring/方法一: 最暴力做法, 时间复杂度O(n3)class Solution {public: string longestPalindrome(string s) { int ans=0; string ss; for(int i=0;i<s.size();i++)//枚举左端点 { .原创 2021-06-02 17:34:49 · 94 阅读 · 0 评论 -
【力扣】3. 无重复字符的最长子串
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/双指针滑动窗口class Solution {public: int lengthOfLongestSubstring(string s) { int ans=0; map<char,int> mp; for(int i=0,j=0;i<s.size();i++) .原创 2021-06-01 15:34:30 · 77 阅读 · 0 评论 -
【力扣】2. 两数相加 【详解】
https://leetcode-cn.com/problems/add-two-numbers/本题其实很简单,就是一个高精度加法,只不过其用的是链表来存储每一位。这对于新手来说是十分的不友好的。于是我们来分析一下:题目给的是一个结构体,里面一个结点的值的变量和一个结点的下一个指针的变量。其中还有这两个值的初始化构造函数。首先如何定义一个结点呢?auto head=new ListNode(-1); 这种是用的智能指针(即根据当前的情况来自动的判断指针的类型)来定义,且ListNo.原创 2021-06-01 15:25:14 · 219 阅读 · 0 评论 -
【力扣】1. 两数之和
https://leetcode-cn.com/problems/two-sum/方法一:暴力 时间复杂度O(n2)class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { for(int i=0;i<nums.size();i++) { for(int j=i+1;j<nums.size();j++.原创 2021-06-01 14:59:17 · 83 阅读 · 0 评论